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

如何让Flutter国际象棋时钟的计时器实现每0.1秒自动持续更新显示

实现方案

首先导入Timer依赖:
import 'dart:async';

在你的State类中声明定时器变量:
Timer? _updateTimer;

重写initState方法,启动0.1秒间隔的周期定时器,每次触发时自动更新计时数据并刷新UI:

@override
void initState() {
  super.initState();
  _updateTimer = Timer.periodic(const Duration(milliseconds: 100), (timer) {
    setState(() {
      // 根据当前激活的玩家更新对应计时
      if (button1 == 2) {
        // 玩家1计时逻辑
        double now = DateTime.now().microsecondsSinceEpoch / 1000000;
        divid = 60.0 - (now - start/1000000 - fminus);
      } else if (button1 == 1) {
        // 玩家2计时逻辑
        double now = DateTime.now().microsecondsSinceEpoch / 1000000;
        divid2 = 60.0 - (now - start/1000000 - fminus2);
      }
    });
  });
}

重写dispose方法销毁定时器,避免内存泄漏:

@override
void dispose() {
  _updateTimer?.cancel();
  super.dispose();
}

调整原有按钮点击逻辑,仅保留状态切换和偏移量计算代码即可,不需要再重复计算divid和divid2的值,定时器会自动完成更新。

内容的提问来源于stack exchange,提问作者George Davis-Diver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:15:04