60s倒计时,用于发送短信等场景

//所需字段
Timer? _timer;
int _countdownTime = 0; //这是短信的倒计时时间

//核心代码
void startCountdownTimer() {
    var callback = (timer) => {
      if(mounted){
        setState(() {
          if (_countdownTime < 1) {
            _timer!.cancel();
          } else {
            _countdownTime = _countdownTime - 1;
            _sendMessageTitle = _countdownTime.toString() + 's';
            if (_countdownTime == 0) {
              _sendMessageTitle = '重新发送';
            }
          }
        })
      }
    };
    _timer = Timer.periodic(Duration(seconds: 1), callback);
  }

触发与使用

//在合适的地方设置倒计时时长
_countdownTime = 60;
//然后调用方法
startCountdownTimer();

//在每次触发前可以添加以下代码保证计时的正确
if (_timer != null) {
    _timer!.cancel();
}

//以下代码保证在页面销毁时计时能正确停止与销毁
@override
  void dispose() {
    if(_timer != null){
      _timer!.cancel();
    }
}

用来控制按钮频率的计时

if(_canTuach){
  _canTuach = false;
  Timer(const Duration(seconds: 3), () {
    _canTuach = true;
  });
  //你需要触发的代码
  ...
  //
}else{
  showMyCustomText('点击过快,请稍后');
  return;
}