[英]how to create 30 minutes time slots in flutter/dart
How to create time slots in flutter / dart?如何在颤振/飞镖中创建时间段?
I want to make a list of 30 minutes time slots from given start time and end time.我想从给定的开始时间和结束时间列出 30 分钟的时间段。
Example: start time 9:00 AM end Time is 10:00 PM list will be示例:开始时间 9:00 AM 结束时间是 10:00 PM 列表将是
List<String> timeSlots = ['9:30 AM','10:00 AM','10:30 AM','11:00 AM'....]
Is there any library to solve this problem?有什么库可以解决这个问题吗?
You can create this with a generator, though the syntax is a little ugly since the TimeOfDay
class added by Flutter isn't very powerful:您可以使用生成器创建它,但语法有点难看,因为 Flutter 添加的
TimeOfDay
类不是很强大:
Iterable<TimeOfDay> getTimes(TimeOfDay startTime, TimeOfDay endTime, Duration step) sync* {
var hour = startTime.hour;
var minute = startTime.minute;
do {
yield TimeOfDay(hour: hour, minute: minute);
minute += step.inMinutes;
while (minute >= 60) {
minute -= 60;
hour++;
}
} while (hour < endTime.hour ||
(hour == endTime.hour && minute <= endTime.minute));
}
Usage:用法:
final startTime = TimeOfDay(hour: 9, minute: 0);
final endTime = TimeOfDay(hour: 22, minute: 0);
final step = Duration(minutes: 30);
final times = getTimes(startTime, endTime, step)
.map((tod) => tod.format(context))
.toList();
print(times);
// Results:
// [9:00 AM, 9:30 AM, 10:00 AM, 10:30 AM, 11:00 AM, 11:30 AM, 12:00 PM, 12:30 PM, 1:00 PM, 1:30 PM, 2:00 PM, 2:30 PM, 3:00 PM, 3:30 PM, 4:00 PM, 4:30 PM, 5:00 PM, 5:30 PM, 6:00 PM, 6:30 PM, 7:00 PM, 7:30 PM, 8:00 PM, 8:30 PM, 9:00 PM, 9:30 PM, 10:00 PM]
Create a list with length : List.generate创建一个长度为: List.generate的列表
List<String>.generate(3, (int index) => "time ${index + 1}");
// ["time 1", "time 2", "time 3"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.