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 Studio綁定下拉框數(shù)據(jù)詳解
這篇文章主要為大家詳細(xì)介紹了Android Studio綁定下拉框數(shù)據(jù),Android Studio綁定網(wǎng)絡(luò)JSON數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Android 實(shí)現(xiàn)抖音小游戲潛艇大挑戰(zhàn)的思路詳解
《潛水艇大挑戰(zhàn)》是抖音上的一款小游戲,最近特別火爆,很多小伙伴都玩過(guò)。接下來(lái)通過(guò)本文給大家分享Android 手?jǐn)]抖音小游戲潛艇大挑戰(zhàn)的思路,需要的朋友可以參考下2020-04-04簡(jiǎn)介Android應(yīng)用中sharedPreferences類存儲(chǔ)數(shù)據(jù)的用法
這篇文章主要介紹了Android應(yīng)用中使用sharedPreferences類存儲(chǔ)數(shù)據(jù)的方法,文中舉了用SharedPreferences保存數(shù)據(jù)和讀取數(shù)據(jù)的例子,需要的朋友可以參考下2016-02-02淺析Android手機(jī)衛(wèi)士之手機(jī)實(shí)現(xiàn)短信指令獲取位置
這篇文章主要介紹了淺析Android手機(jī)衛(wèi)士之手機(jī)實(shí)現(xiàn)短信指令獲取位置的相關(guān)資料,需要的朋友可以參考下2016-04-04Android Fragment多層嵌套重影問(wèn)題的解決方法
這篇文章主要介紹了Android Fragment多層嵌套重影問(wèn)題的解決方法,從解決bug的思想,導(dǎo)致原因,原理解析等方面找出問(wèn)題所在原因,最終解決方法就可以簡(jiǎn)單了,對(duì)fragment 多層嵌套問(wèn)題感興趣的朋友一起通過(guò)本文學(xué)習(xí)吧2016-08-08Android 對(duì)話框sweet-alert-dialog
這篇文章主要介紹了Android 對(duì)話框sweet-alert-dialog的相關(guān)資料,需要的朋友可以參考下2016-09-09Android Studio3.2中導(dǎo)出jar包的過(guò)程詳解
這篇文章主要介紹了Android Studio3.2中導(dǎo)出jar包的過(guò)程,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06android 6.0 權(quán)限授權(quán)方法
今天小編就為大家分享一篇android 6.0 權(quán)限授權(quán)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Android實(shí)現(xiàn)可拖動(dòng)層疊卡片布局
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可拖動(dòng)層疊卡片布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11