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

Flutter中如何实现每5分钟整点触发函数(如10:00、10:05)?

解决Dart定时器按整点间隔触发的问题

要实现按10:00、10:05、10:15这类5分钟整点间隔触发函数,不能直接用Timer.periodic(它会从启动时间开始累加间隔),可以通过以下方式实现:

  • 先计算当前时间到下一个5分钟整点时刻的延迟时间
  • 用一次性定时器触发首次执行,之后再启动周期性定时器

完整代码示例

void setupScheduledTimer() {
  final now = DateTime.now();
  // 计算到下一个5分钟整点的延迟分钟数,兼容刚好是整点的情况
  int delayMinutes = (5 - (now.minute % 5)) % 5;
  int initialDelay = delayMinutes * 60 * 1000;

  // 首次触发:等到下一个5分钟整点执行目标函数
  Timer(Duration(milliseconds: initialDelay), () {
    yourTargetFunction();
    // 之后每5分钟周期性触发
    Timer.periodic(const Duration(minutes: 5), (Timer t) {
      yourTargetFunction();
    });
  });
}

void yourTargetFunction() {
  // 替换为你需要执行的业务逻辑
  print('函数触发时间: ${DateTime.now().toString()}');
}

逻辑说明

  • 通过now.minute % 5获取当前分钟数除以5的余数,计算出离下一个5分钟整点的剩余时间
  • 一次性定时器确保首次执行对齐目标时间点,后续的周期性定时器会基于这个时间点保持5分钟间隔,不会出现偏移

内容的提问来源于stack exchange,提问作者scott lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:40:36