0

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

定时器片段:

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


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

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

4

3 回答 3

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(); }
 );
于 2019-09-18T20:12:06.680 回答
0

您可以使用 Future.delayed。

Future.delayed(const Duration(seconds: n), () => _increamentCounter());
于 2019-08-28T19:10:59.077 回答
0

或者Future.delayed(),您也可以使用

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

该类Timer公开了一些额外的方法,如.cancel().tickisActive,因此如果您发现自己在路上需要它们,请更喜欢它。

于 2019-08-28T20:12:10.560 回答