如何让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
相关产品推荐
相关产品推荐

