我的 Flutter 应用程序中有一个定期计时器,它每 x 秒更改页面上的一些值:
periodicTimer = new Timer.periodic(Duration(seconds: timer), (Timer t) {
setState(() {
if (globals.selectedBottomNav == 0) {
nextKey();
} else {
nextCircleKey();
}
});
});
但是,我需要能够在更短的时间内执行另一个操作。因此,例如,如果我的计时器变量设置为 5 秒,我需要能够每 5 秒运行一次我的 setState,但是在每个定时循环 3 秒后,我想运行一些其他代码。
对我如何实现这一目标有任何帮助吗?我尝试了各种嵌套的 Timer 和 Timer.periodic 选项,但得到了奇怪的结果。
谢谢
答案 0 :(得分:0)
如果您打算使用单个计时器完成此操作,那么缩短计时器的持续时间并自己计算秒数如何
int secondsCounter = 0;
periodicTimer = new Timer.periodic(Duration(seconds: 1), (Timer t) {
secondsCounter++;
if(secondsCounter == 3){
// do stuff that's supposed to happen after 3 seconds
} else if(secondsCounter == 5){
// do stuff that's supposed to happen after 5 seconds
}
if(secondsCounter >= 5){
secondsCounter = 0;
}
});
答案 1 :(得分:0)
我认为这个简单的实现没有任何问题。如果您对此有意外行为,请更新您的问题,详细说明预期与实际行为,以及您尝试过的任何其他解决方案。
periodicTimer = new Timer.periodic(Duration(seconds: timer), (Timer t) {
Timer(Duration(seconds: 3), () {
// perform other operations here
});
setState(() {
if (globals.selectedBottomNav == 0) {
nextKey();
} else {
nextCircleKey();
}
});
});