Флаттер: как остановить таймер через N секунд?
Я использую приведенный ниже код для запуска таймера
Фрагмент таймера:
_increamentCounter() {
Timer.periodic(Duration(seconds: 2), (timer) {
setState(() {
_counter++;
});
});
}
RaisedButton raisedButton =
new RaisedButton(child: new Text("Button"), onPressed: () {
_increamentCounter();
});
Все, что я хочу, это остановить этот таймер через определенный (N) интервал таймера.
2 ответа
Поскольку вы хотите отменить 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(); }
);
В качестве альтернативы Future.delayed()
Вы также можете использовать
Timer(const Duration(seconds: n), () => _increamentCounter());
Timer
класс выставляет пару дополнительных методов, таких как .cancel()
, .tick
, а также isActive
Так что предпочитайте, если вы видите, что нуждаетесь в них в будущем.
Вы можете использовать Future.delayed.
Future.delayed(const Duration(seconds: n), () => _increamentCounter());