flutter如何设置和使用duration
在Flutter中,Duration具体有哪些使用场景?比如动画、延迟执行等场景下该如何正确设置参数?官方文档提到的毫秒、秒等单位转换是否有更简便的写法?处理倒计时或间隔任务时,Duration与Timer结合使用时需要注意什么?能否举例说明常见坑点?
2 回复
在Flutter中,使用Duration类设置时间间隔。例如:
Duration duration = Duration(seconds: 5);
常用属性:milliseconds、seconds、minutes等。可用于Future.delayed、动画控制器等场景。
更多关于flutter如何设置和使用duration的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,Duration 类用于表示时间间隔,可以精确到微秒。以下是设置和使用方法:
1. 创建 Duration 对象
// 常用构造方法
Duration days = Duration(days: 1); // 1天
Duration hours = Duration(hours: 2); // 2小时
Duration minutes = Duration(minutes: 30); // 30分钟
Duration seconds = Duration(seconds: 45); // 45秒
Duration milliseconds = Duration(milliseconds: 500); // 500毫秒
// 组合使用
Duration complex = Duration(
days: 1,
hours: 2,
minutes: 30,
seconds: 15,
milliseconds: 500,
microseconds: 200
);
2. 常用属性和方法
Duration duration = Duration(minutes: 2, seconds: 30);
// 获取时间组成部分
print(duration.inDays); // 总天数
print(duration.inHours); // 总小时数
print(duration.inMinutes); // 总分钟数
print(duration.inSeconds); // 总秒数
print(duration.inMilliseconds);// 总毫秒数
// 字符串表示
print(duration.toString()); // 输出: 0:02:30.000000
3. 实际应用场景
// 1. 延迟执行
Future.delayed(Duration(seconds: 2), () {
print('2秒后执行');
});
// 2. 动画时长
AnimationController(
duration: Duration(milliseconds: 300),
vsync: this,
);
// 3. 定时器
Timer.periodic(Duration(seconds: 1), (timer) {
print('每秒执行一次');
});
// 4. 时间计算
DateTime now = DateTime.now();
DateTime future = now.add(Duration(hours: 1)); // 1小时后
4. 时间格式化(需要 intl 包)
import 'package:intl/intl.dart';
String formatDuration(Duration duration) {
final hours = duration.inHours;
final minutes = duration.inMinutes.remainder(60);
final seconds = duration.inSeconds.remainder(60);
return '${hours.toString().padLeft(2, '0')}:'
'${minutes.toString().padLeft(2, '0')}:'
'${seconds.toString().padLeft(2, '0')}';
}
注意事项:
- 最小时间单位是微秒(1秒 = 1,000,000微秒)
- 负值 Duration 表示过去的时间间隔
- 在比较时间间隔时,可以直接使用比较运算符(>, <, ==)
这样可以方便地在各种需要时间控制的场景中使用 Duration。

