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

Flutter实现2秒后打印经纬度遇问题:定时器持续运行至100秒

问题分析与解决方案

你的核心问题是误用了周期性定时器来实现“单次延迟执行”的需求,再加上start变量初始值为100,导致定时器会循环执行100次才停止,完全不符合“2秒后打印一次经纬度”的预期。

正确实现方式

要实现“延迟2秒后执行一次操作”,应该使用一次性定时器(Timer的非周期性构造),而非Timer.periodic(用于周期性重复执行的定时器)。

修改后的代码如下:

void startTimer() {
  // 一次性定时器:延迟2秒后执行回调
  timer2 = Timer(const Duration(seconds: 2), () {
    // 打印当前经纬度,若无需触发UI更新则不需要setState
    print("My current location ${homeMapCtrl!.userCurrentLatLng}");
    // 如果需要同步更新UI,再调用setState
    // setState(() {});
  });
}

额外注意事项

  • 务必在组件的dispose方法中取消定时器,避免内存泄漏:
    @override
    void dispose() {
      timer2?.cancel();
      super.dispose();
    }
    
  • 确保homeMapCtrl!.userCurrentLatLng在定时器触发时已完成初始化,避免空指针异常。如果在Consumer中调用该方法,要保证对应的状态数据已准备就绪。

内容的提问来源于stack exchange,提问作者Mahnoor Waheed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:01:01