【问题标题】:Flutter: How to stop timer after N seconds interval?Flutter:如何在 N 秒间隔后停止计时器?
【发布时间】:2020-01-02 00:59:54
【问题描述】:

我正在使用下面的代码来启动计时器

计时器片段:

 _increamentCounter() {
    Timer.periodic(Duration(seconds: 2), (timer) {
       setState(() {
         _counter++;
       });
    });
  }


 RaisedButton raisedButton =
        new RaisedButton(child: new Text("Button"), onPressed: () {
            _increamentCounter();
        });

我想要的是在特定(N)个定时器间隔之后停止这个定时器。

【问题讨论】:

  • 你的问题标题说你想停止Timer,但后来你说你想开始Timer。是哪个?

标签: flutter dart flutter-timer


【解决方案1】:

由于您想在特定数量的间隔之后取消Timer,而不是在特定时间之后,也许这个解决方案比其他答案更合适?

Timer _incrementCounterTimer;


_incrementCounter() {
    _incrementCounterTimer = Timer.periodic(Duration(seconds: 2), (timer) {     
        counter++; 

        if( counter == 5 ) // <-- Change this to your preferred value of N
            _incrementCounterTimer.cancel();

        setState(() {});
    });
}


 RaisedButton raisedButton = new RaisedButton(
    child: new Text("Button"), 
    onPressed: () { _incrementCounter(); }
 );

【讨论】:

    【解决方案2】:

    除了Future.delayed(),你也可以使用

    Timer(const Duration(seconds: n), () => _increamentCounter());
    

    Timer 类公开了一些额外的方法,例如 .cancel().tickisActive,因此如果您认为自己在未来需要它们,请选择它。

    【讨论】:

      【解决方案3】:

      您可以使用 Future.delayed。

      Future.delayed(const Duration(seconds: n), () => _increamentCounter());
      

      【讨论】:

        猜你喜欢
        • 2019-10-04
        • 1970-01-01
        • 1970-01-01
        • 2013-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        相关资源
        最近更新 更多