And*_*rio 3 timer dart flutter
我在另一个线程上遇到了这个计时器代码。当您同时按下RaisedButton多次时,每次点击都会增加 -1 秒,从而增加减少的速度。
有关检查计时器是否已处于活动状态以及是否不允许创建RaisedButton新计时器的最简单方法的任何想法。谢谢!
import 'dart:async';
[...]
Timer _timer;
int _start = 10;
void startTimer() {
  const oneSec = const Duration(seconds: 1);
  _timer = new Timer.periodic(
    oneSec,
    (Timer timer) => setState(
      () {
        if (_start < 1) {
          timer.cancel();
        } else {
          _start = _start - 1;
        }
      },
    ),
  );
}
@override
void dispose() {
  _timer.cancel();
  super.dispose();
}
Widget build(BuildContext context) {
  return new Scaffold(
    appBar: AppBar(title: Text("Timer test")),
    body: Column(
      children: <Widget>[
        RaisedButton(
          onPressed: () {
            startTimer();
          },
          child: Text("start"),
        ),
        Text("$_start")
      ],
    ),
  );
}
使用 s的属性添加检查以查看是否_timer已处于活动状态。如果它已经处于活动状态,则不会创建新的。isActiveTimer
例子:
void startTimer() {
  const oneSec = const Duration(seconds: 1);
  if(!_timer?.isActive) {
    _timer = new Timer.periodic(
      oneSec,
      (Timer timer) => setState(
        () {
          if (_start < 1) {
            timer.cancel();
          } else {
            _start = _start - 1;
          }
        },
      ),
    );
  }
}
| 归档时间: | 
 | 
| 查看次数: | 4422 次 | 
| 最近记录: |