Flutter Timer 的基本使用

77 阅读1分钟

普通的定时器

> 类似于setTimeout , 只执行一次

final timer = Timer(
  const Duration(seconds: 3),
  () {
    //做你想做的
  },
);

间隔执行的定时器

> 类似于setInterval, 间隔进行执行

创建一个10秒的计时器

Timer? _timer;
int _time = 10;
bool _isTiming = false;

void _startTime() {
    // 如果
    if (_isTiming) {
      return;
    }
    _isTiming = true;
    // 注意:下面的第一句 timer 其实就是 _timer, 两者是一样的
    _timer = Timer.periodic(const Duration(seconds: 1), (timer) { // 这里的timer就是_timer
      setState(() {
        if (_time > 0) {
          _time--;
          print(
            '11111----${_timer?.tick} -----${timer.tick}---${timer.isActive}',
          );
          timer.cancel();
        } else {
          _isTiming = false;
          _time = 10;
          _timer?.cancel(); // 相当于 timer.cancel() 
        }
      });
    });
  }