【发布时间】:2019-05-09 11:39:06
【问题描述】:
我可以将时间传递给我的小部件,但我的小部件应该实例化时间本身,而不是从父小部件接收 DateTime。
【问题讨论】:
我可以将时间传递给我的小部件,但我的小部件应该实例化时间本身,而不是从父小部件接收 DateTime。
【问题讨论】:
【讨论】:
DateTime.now()。
extension CustomizableDateTime on DateTime {
static DateTime customTime;
static DateTime get current {
if (customTime != null)
return customTime;
else
return DateTime.now();
}
}
只需在生产代码中使用CustomizableDateTime.current。您可以像这样修改测试中的返回值:CustomizableDateTime.customTime = DateTime.parse("1969-07-20 20:18:04");。无需使用第三方库。
【讨论】:
正如 Mary 所说,一个非常简洁的方法是使用由 Dart 团队维护的the clock package。
正常使用:
import 'package:clock/clock.dart';
void main() {
// prints current date and time
print(clock.now());
}
覆盖当前时间:
import 'package:clock/clock.dart';
void main() {
withClock(
Clock.fixed(DateTime(2000)),
() {
// always prints 2000-01-01 00:00:00.
print(clock.now());
},
);
}
我更详细地写过这个on my blog。
请注意,对于小部件测试,您需要在 withClock 回调中包装 pumpWidget、pump 和 expect - 仅包装 pumpWidget 不起作用。
【讨论】: