mysql 如何暂停计时器直到程序在 Flutter 中结束

nqwrtyyt  于 2022-12-10  发布在  Mysql
关注(0)|答案(2)|浏览(116)

我正在使用定时器刷新来自

timer = Timer.periodic(Duration(seconds: 60), (Timer t) async {
      await getList();
})

它工作得很好。我想暂停计时器,直到getList进程完成。过程本身需要30到120秒。
那么他们有暂停计时器的选项吗?
提前谢谢你。

cotxawn7

cotxawn71#

有一个开放的issue来解决您的问题。DART SDK不提供计时器的暂停或重启功能。您可以使用this package,它可以为您完成这项工作。或者使用评论中提到的Stream.periodic()。希望这能帮上忙。

pbgvytdp

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();
  }

相关问题