Flutter之Timer實(shí)現(xiàn)短信驗(yàn)證碼獲取60s倒計(jì)時(shí)功能的代碼
先看下效果:

兩種需求場(chǎng)景:
1.廣告頁(yè)3s后跳轉(zhuǎn)到首頁(yè)
2.短信驗(yàn)證碼60s倒計(jì)時(shí)
第一種的話,根據(jù)需求我們可以知道,我們想要的效果就是3s結(jié)束做出一個(gè)動(dòng)作。
factory Timer(Duration duration, void callback()) {
if (Zone.current == Zone.root) {
// No need to bind the callback. We know that the root's timer will
// be invoked in the root zone.
return Zone.current.createTimer(duration, callback);
}
return Zone.current
.createTimer(duration, Zone.current.bindCallbackGuarded(callback));
}
兩個(gè)參數(shù),第一個(gè)參數(shù)超時(shí)時(shí)間,即多久后執(zhí)行你想要的動(dòng)作,第二個(gè)參數(shù)callback回調(diào)方法,即超時(shí)后你想要執(zhí)行的動(dòng)作是什么,比如跳轉(zhuǎn)到首頁(yè)。
第二種的話就是需要不斷的做出倒計(jì)時(shí)的動(dòng)作。
factory Timer.periodic(Duration duration, void callback(Timer timer)) {
if (Zone.current == Zone.root) {
// No need to bind the callback. We know that the root's timer will
// be invoked in the root zone.
return Zone.current.createPeriodicTimer(duration, callback);
}
var boundCallback = Zone.current.bindUnaryCallbackGuarded<Timer>(callback);
return Zone.current.createPeriodicTimer(duration, boundCallback);
}
這種調(diào)用方式和上面的方式的區(qū)別是:第一種只會(huì)回調(diào)一次,就是超時(shí)時(shí)間到了之后執(zhí)行callback回調(diào)方法,而Timer.periodic調(diào)用方式是循環(huán)不斷的調(diào)用,比如說(shuō)通過(guò)這種方式,你設(shè)置的超時(shí)時(shí)間是1s的話,那就會(huì)每隔1s調(diào)用一次callback的回調(diào)方法,也就是通過(guò)這種方式來(lái)實(shí)現(xiàn)我們的短信驗(yàn)證碼60s倒計(jì)時(shí)獲取。
看下具體用法吧:
Timer _timer; int _timeCount = 60;
觸發(fā)事件:
onTap: () {
_startTimer();
},
處理方法:
void _startTimer() {
ToastUtil.showTips('短信驗(yàn)證碼已發(fā)送,請(qǐng)注意查收');
_timer = Timer.periodic(Duration(seconds: 1), (Timer timer) => {
setState(() {
if(_timeCount <= 0){
_autoCodeText = '重新獲取';
_timer.cancel();
_timeCount = 60;
}else {
_timeCount -= 1;
_autoCodeText = "$_timeCount" + 's';
}
})
});
}
到此這篇關(guān)于Flutter之Timer實(shí)現(xiàn)短信驗(yàn)證碼獲取60s倒計(jì)時(shí)功能的代碼的文章就介紹到這了,更多相關(guān)Flutter短信驗(yàn)證碼倒計(jì)時(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android自定義評(píng)分控件的完整實(shí)例
在Android開(kāi)發(fā)中,我們經(jīng)常會(huì)用到對(duì)商家或者商品的評(píng)價(jià),運(yùn)用星星進(jìn)行打分,下面這篇文章主要給大家介紹了關(guān)于Android自定義評(píng)分控件的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
基于Android中獲取資源的id和url方法總結(jié)
下面小編就為大家分享一篇基于Android中獲取資源的id和url方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Eclipse NDK遷移到Android Studio的方法示例
本篇文章主要介紹了Eclipse NDK遷移到Android Studio的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Android編程滑動(dòng)效果之Gallery仿圖像集瀏覽實(shí)現(xiàn)方法
這篇文章主要介紹了Android編程滑動(dòng)效果之Gallery仿圖像集瀏覽實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Gallery瀏覽圖片的原理、步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-02-02
Android?Camera實(shí)現(xiàn)旋轉(zhuǎn)角度
這篇文章主要為大家詳細(xì)介紹了Android?Camera實(shí)現(xiàn)旋轉(zhuǎn)角度,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
Android Studio gradle配置packagingOptions打包so庫(kù)重復(fù)
這篇文章主要為大家介紹了Android Studio gradle配置packagingOptions打包so庫(kù)重復(fù)問(wèn)題的解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Android超清晰6.0權(quán)限申請(qǐng)AndPermission
這篇文章主要介紹了Android超清晰6.0權(quán)限申請(qǐng)AndPermission,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
淺析Flutter AbsorbPointer 與 IgnorePointer的區(qū)別
Flutter是Google一個(gè)新的用于構(gòu)建跨平臺(tái)的手機(jī)App的SDK。這篇文章主要介紹了Flutter AbsorbPointer 與 IgnorePointer的區(qū)別,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Android Activity啟動(dòng)模式之singleTop實(shí)例詳解
這篇文章主要介紹了Android Activity啟動(dòng)模式之singleTop,結(jié)合實(shí)例形式較為詳細(xì)的分析了singleTop模式的功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-01-01

