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

Flutter中如何用SimpleTimer组件突破初始时长限制?

问题描述

我使用simple_timer包创建了SimpleTimer组件,文档说明add方法可以突破初始时长限制。我设置初始时长为20秒,每答对一题就调用add方法添加5秒,但始终无法突破20秒的初始限制。

组件代码

SimpleTimer(
  timerStyle: TimerStyle.expanding_sector,
  backgroundColor: splashBackground,
  progressIndicatorColor: backgroundHighlight,
  controller: _timerController,
  duration: startingTime,
  onEnd: () {
    setState(() {
      textField = false;
    });
    //go to results page?
  },
),

调用add方法的代码

_timerController.add(
  bonus,
  start: true,
);
解决方案
  1. 确认控制器初始化方式
    确保_timerController在组件初始化阶段正确创建,比如在initState中初始化:
late SimpleTimerController _timerController;

@override
void initState() {
  super.initState();
  _timerController = SimpleTimerController();
}
  1. 调整add方法的start参数
    当计时器已经处于运行状态时,调用add方法时将start设为false——start: true会强制重启计时器,导致之前累加的时长被覆盖,无法突破初始限制:
_timerController.add(bonus, start: false);
  1. 校验时长参数类型
    确保startingTime和bonus都是正确的Duration类型,比如:
final Duration startingTime = Duration(seconds: 20);
final Duration bonus = Duration(seconds: 5);

完成以上调整后,add方法应该能正常累加时长,突破初始20秒的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:09:54