Flutter倒計時/計時器的實現(xiàn)代碼
在我們實現(xiàn)某些功能時,可能會有倒計時的需求。
比如發(fā)送短信驗證碼,發(fā)送成功后可能要求用戶一段時間內(nèi)不能再次發(fā)送,這時候我們就需要進行倒計時,時間到了才允許再次操作。
如下圖:

為了實現(xiàn)這樣場景的需求,我們需要使用 Timer.periodic 。
一、引入Timer對應的庫
import 'dart:async';
二、定義計時變量
class _LoginPageState extends State<LoginPage> {
...
Timer _timer;
int _countdownTime = 0;
...
}
三、點擊后開始倒計時
這里我們點擊 發(fā)送驗證碼 文字來舉例說明。
GestureDetector(
onTap: () {
if (_countdownTime == 0 && validateMobile()) {
//Http請求發(fā)送驗證碼
...
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),
),
),
)
四、倒計時的實現(xiàn)方法
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();
}
}
這樣我們就實現(xiàn)了發(fā)送驗證碼的倒計時功能。除此之外,Timer還能做其他的很多事情,有興趣的同學可以查看Timer的 官方文檔 。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
條件數(shù)據(jù)庫Android:sqllite的簡單使用
條件數(shù)據(jù)庫Android:sqllite的簡單使用,需要的朋友可以參考一下2013-05-05
關于Android中ListView嵌套GridView的問題
在Android開發(fā)的過程中可能需要用到listview嵌套gridview的場景,但是在嵌套過程中也許會遇到問題,我們下面一起來看看是什么問題以及如何解決。2016-08-08
Android實現(xiàn)判斷某個服務是否正在運行的方法
這篇文章主要介紹了Android實現(xiàn)判斷某個服務是否正在運行的方法,涉及Android針對系統(tǒng)服務運行狀態(tài)的判斷技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10
Android開發(fā)中數(shù)據(jù)庫升級且表添加新列的方法
這篇文章主要介紹了Android開發(fā)中數(shù)據(jù)庫升級且表添加新列的方法,結(jié)合具體實例形式分析了Android數(shù)據(jù)庫升級開發(fā)過程中常見問題與相關操作技巧,需要的朋友可以參考下2017-09-09
flutter?material?widget組件之信息展示組件使用詳解
這篇文章主要為大家詳細介紹了flutter?material?widget組件之信息展示組件的使用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08

