Flutter倒计时/计时器的实现代码

在我们实现某些功能时,可能会有倒计时的需求。

比如发送短信验证码,发送成功后可能要求用户一段时间内不能再次发送,这时候我们就需要进行倒计时,时间到了才允许再次操作。

如下图:

为了实现这样场景的需求,我们需要使用 Timer.periodic

一、引入Timer对应的库

import 'dart:async';

二、定义计时变量

class _LoginPageState extends State<LoginPage> {

...

Timer _timer;

int _countdownTime = 0;

...

}

三、点击后开始倒计时

这里我们点击 发送验证码 文字来举例说明。

GestureDetector(

onTap: () {

if (_countdownTime == 0 && validateMobile()) {

//Http请求发送验证码

...

setState(() {

_countdownTime = 60;

});

//开始倒计时

startCountdownTimer();

}

},

child: Text(

_countdownTime > 0 ? '$_countdownTime后重新获取' : '获取验证码',

style: TextStyle(

fontSize: 14,

color: _countdownTime > 0

? Color.fromARGB(255, 183, 184, 195)

: Color.fromARGB(255, 17, 132, 255),

),

),

)

四、倒计时的实现方法

void startCountdownTimer() {

const oneSec = const Duration(seconds: 1);

var callback = (timer) => {

setState(() {

if (_countdownTime < 1) {

_timer.cancel();

} else {

_countdownTime = _countdownTime - 1;

}

})

};

_timer = Timer.periodic(oneSec, callback);

}

五、最后在dispose()取消定时器

@override

void dispose() {

super.dispose();

if (_timer != null) {

_timer.cancel();

}

}

这样我们就实现了发送验证码的倒计时功能。除此之外,Timer还能做其他的很多事情,有兴趣的同学可以查看Timer的 官方文档 。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 Flutter倒计时/计时器的实现代码 的全部内容, 来源链接: utcz.com/p/241763.html

回到顶部