You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何结合Future/await与Timer.periodic实现顺序定时任务

问题修复:让定时器按顺序执行

你的代码问题在于mainTimerStart函数虽然声明为Future<void>,但内部没有等待定时器完成就直接返回了,导致await完全起不到等待作用,所有步骤会同时执行。

修复后的mainTimerStart函数

Future<void> mainTimerStart(int setMainTime) async {
  isMainTimerRun(true);
  time(setMainTime);
  final completer = Completer<void>();
  mainTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
    if (time <= 1) {
      mainTimer?.cancel();
      time(0);
      isMainTimerRun(false);
      completer.complete(); // 定时器结束时触发Future完成
    } else {
      time--;
    }
  });
  return completer.future; // 返回Future,等待定时器结束
}

修复说明

通过Completer手动控制Future的完成时机:只有当倒计时结束、定时器被取消时,才调用completer.complete(),这样await mainTimerStart(2)会真正等待2秒后,再执行后续的print和下一个定时器逻辑,完全符合你期望的步骤顺序。

内容的提问来源于stack exchange,提问作者최수형

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:25:29