如何在颤振中创建子计时器?

时间:2021-01-28 01:12:59

标签: flutter dart

我的 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 选项,但得到了奇怪的结果。

谢谢

2 个答案:

答案 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();
    }
  });
});