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;
}
Comments NOTHING