上一篇
Flutter:验证码倒计时的实现
1.先看看api文档有没有像安卓CountDownTimer一样的类
地址: https://api.dart.dev/stable/2.4.0/dart-async/Timer-class.html

image.png
ok,既然有api,那就照着葫芦画瓢
2.导入包
import 'dart:async';
3.添加一个倒计时方法
class LoginPageState extends State<LoginPage> {
//定义变量
Timer _timer;
//倒计时数值
var countdownTime = 0;
//倒计时方法
startCountdown() {
countdownTime = 60;
final call = (timer) {
setState(() {
if (countdownTime < 1) {
_timer.cancel();
} else {
countdownTime -= 1;
}
});
};
_timer = Timer.periodic(Duration(seconds: 1), call);
}
咋和官方文档不一样,官方的只是倒计时,而我们需要重复这个倒计时,还是看文档

image.png
Timer.periodic 为创造一个重复的倒计时对象
3.为我们的验证码 Text添加点击方法

image.png
可以看到又多了一层判断countdownTime=0,如果不加这个判断的话,每次点击都会执行开始计时,计时器就会创建多个。
4.为Text赋值
我这里定义了一个方法
String handleCodeText() {
if (countdownTime > 0) {
return "${countdownTime}s后重新获取";
} else
return "获取验证码";
}
当然你也可以用Java中的三目运算符
child: Text(
countdownTime>0?"${countdownTime}s后重新获取":"获取验证码",
style: TextStyle(
color: Color.fromRGBO(21, 201, 187, 1)),
),
5.别忘了在页面关闭时取消掉这个Timer
@override
void dispose() {
super.dispose();
if (_timer != null) {
_timer.cancel();
}
}
6.最后来看一下效果吧,为了方便演示,我把时间调成了5s

timer.gif
©
著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务
友情链接
更多
鱼籽鱼泡的做法
广州长隆免费停车攻略
蛋糕什么样的好吃
花生怎么做才能好吃到停不下来?
比熊幼犬应该选择什么样的狗粮?
长沙油爆虾的做法
新平哀牢山旅游攻略
江西值得去的景点
常州一日游攻略
引路人攻略
你知道狗狗有哪些不同的类型吗?
韩国攻略大全
户外徒步装备如何挑选更实用?
DeepSeek 新模型与 Claude 对比测评
狗狗翻肠怎么办?有什么解决办法?
给狗狗的话应该怎么说才最有效?
丹霞山住宿攻略
临沂市有什么好玩的地方旅游景点
北海有什么好玩的地方
卷心菜炒粉条的做法
菠萝蜜什么样的好吃
厦门自驾游有哪些必打卡的线路推荐?
济南到上海自驾游攻略
人民的名义:第一次常委会,沙瑞金的几处失误与官场逻辑的现实折射
哪家店的宠物用品性价比最高?
自制泰迪狗粮真的健康吗?
上海游轮游攻略
南宁附近旅游景点
狗狗舔爪子是什么意思
家庭宠物寄养需要注意哪些问题?