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, );
解决方案
- 确认控制器初始化方式
确保_timerController在组件初始化阶段正确创建,比如在initState中初始化:
late SimpleTimerController _timerController; @override void initState() { super.initState(); _timerController = SimpleTimerController(); }
- 调整
add方法的start参数
当计时器已经处于运行状态时,调用add方法时将start设为false——start: true会强制重启计时器,导致之前累加的时长被覆盖,无法突破初始限制:
_timerController.add(bonus, start: false);
- 校验时长参数类型
确保startingTime和bonus都是正确的Duration类型,比如:
final Duration startingTime = Duration(seconds: 20); final Duration bonus = Duration(seconds: 5);
完成以上调整后,add方法应该能正常累加时长,突破初始20秒的限制。
内容的提问来源于stack exchange,提问作者Coca95
相关产品推荐
相关产品推荐

