我正在使用定时器刷新来自
timer = Timer.periodic(Duration(seconds: 60), (Timer t) async { await getList(); })
它工作得很好。我想暂停计时器,直到getList进程完成。过程本身需要30到120秒。那么他们有暂停计时器的选项吗?提前谢谢你。
cotxawn71#
有一个开放的issue来解决您的问题。DART SDK不提供计时器的暂停或重启功能。您可以使用this package,它可以为您完成这项工作。或者使用评论中提到的Stream.periodic()。希望这能帮上忙。
Stream.periodic()
pbgvytdp2#
我想你会更喜欢这种解决方案的。
late Timer timer; @override void initState() { super.initState(); callDataWithPause60Seconde(); }
callDataWithPause60Seconde() { Future.doWhile(() async { print("Call getList()"); // await getList(); timer = await Future.delayed(Duration(seconds: 60)); return true; }); }
别忘了取消计时器
@override void dispose() { timer.cancel(); // TODO: implement dispose super.dispose(); }
2条答案
按热度按时间cotxawn71#
有一个开放的issue来解决您的问题。DART SDK不提供计时器的暂停或重启功能。您可以使用this package,它可以为您完成这项工作。或者使用评论中提到的
Stream.periodic()
。希望这能帮上忙。pbgvytdp2#
我想你会更喜欢这种解决方案的。
别忘了取消计时器