Flutter?Widget之FutureBuilder使用示例詳解
正文
本質(zhì)上Flutter和Dart是異步的,Dart是Futures使你能夠管理IO而不用擔(dān)心線程或死鎖。
例如,從應(yīng)用程序外部加載數(shù)據(jù)需要時(shí)間,而Futures允許Dart先處理其他任務(wù)直到請(qǐng)求的數(shù)據(jù)可用。
涉及Future時(shí) 如何構(gòu)建Flutter小部件
輸入FutureBuilder
輸入FutureBuilder,這是處理Futures的構(gòu)造器
FutureBuilder( future: _data, builder: _myBuilderFunction, )
FutureBuilder讓你輕松確定Future的當(dāng)前狀態(tài)并選擇在數(shù)據(jù)加載時(shí)和數(shù)據(jù)可用時(shí)顯示的內(nèi)容。
首先給FutureBuilder一個(gè)Future,但是等一下,你不想在FutureBuilder里創(chuàng)建Future。
正如這段代碼所代表
每次重建FutureBuilder的parent時(shí)都會(huì)重新開(kāi)始獲取數(shù)據(jù)。
相反,早些獲得Future,就像在小部件生命周期方法一樣
initState didUpdateWidget didChangeDependencies
因此,創(chuàng)建新的狀態(tài)變量并將此數(shù)據(jù)獲取請(qǐng)求,從FutureBuilder移到initState,在那里我們會(huì)給它一個(gè)builder,但要確保使用connectionState檢查Future的狀態(tài),并在Future忙碌時(shí)顯示適當(dāng)?shù)男〔考?/p>
Future<MyData> _data; initState() { _data = http.get('http://awessome.data'), } FutureBuilder( future: _data, builder: (context, snapshot) { if (snapshot.connectionState == done) { return AwesomeData(snapshot.data); } else { return CircularProgressIndicator(); } } )
最后,在Future進(jìn)行解析時(shí)最好檢查有沒(méi)有發(fā)生錯(cuò)誤
if (snapshot.connectionState == done) { if (snapshot.hasError) { return SomethingWenWrong(); } }
其他connectionStates
你也可以使用其他connectionStates
- ConnectionState.active
- ConnectionState.done
- ConnectionState.waiting
- ConnectionState.none
如果想了解有關(guān)FutureBuilder的內(nèi)容,或者關(guān)于Flutter的其他功能,請(qǐng)?jiān)L問(wèn)flutter.dev
以上就是Flutter Widget之FutureBuilder使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Flutter Widget FutureBuilder的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android復(fù)選框CheckBox與開(kāi)關(guān)按鈕Switch及單選按鈕RadioButton使用示例詳解
這篇文章主要介紹了Android復(fù)選框CheckBox與開(kāi)關(guān)按鈕Switch及單選按鈕RadioButton使用示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-09-09Android中使用Toast.cancel()方法優(yōu)化toast內(nèi)容顯示的解決方法
做程序員的,基本一看api就知道,用這個(gè)可以取消上一個(gè)toast的顯示,然后顯示下一個(gè),這樣就能解決出現(xiàn)的問(wèn)題??墒窃跍y(cè)試的過(guò)程中,發(fā)現(xiàn)卻沒(méi)有想象中的那么簡(jiǎn)單,不信可以百度一下,很多很多人發(fā)現(xiàn)toast的cancel()方法不起作用2013-05-05android二級(jí)listview列表實(shí)現(xiàn)代碼
今天來(lái)實(shí)現(xiàn)以下大眾點(diǎn)評(píng)客戶端的橫向listview二級(jí)列表,感興趣的朋友可以研究下2013-01-01超簡(jiǎn)單實(shí)現(xiàn)Android自定義Toast示例(附源碼)
本篇文章主要介紹了超簡(jiǎn)單實(shí)現(xiàn)Android自定義Toast示例(附源碼),具有一定的參考價(jià)值,有興趣的可以了解一下。2017-02-02Android組件banner實(shí)現(xiàn)左右滑屏效果
這篇文章主要為大家詳細(xì)介紹了Android組件banner實(shí)現(xiàn)左右滑屏效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10設(shè)置Android設(shè)備WIFI在休眠時(shí)永不斷開(kāi)的代碼實(shí)現(xiàn)
這篇文章主要介紹了設(shè)置Android設(shè)備WIFI在休眠時(shí)永不斷開(kāi)的代碼實(shí)現(xiàn),需要的朋友可以參考下2014-07-07Android編程實(shí)現(xiàn)讀取本地SD卡圖片的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)讀取本地SD卡圖片的方法,涉及Android針對(duì)文件讀取及判定操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11Android中使用orc實(shí)現(xiàn)文字識(shí)別實(shí)例
這篇文章主要介紹了Android中使用orc實(shí)現(xiàn)文字識(shí)別實(shí)例,詳細(xì)的介紹了orc的簡(jiǎn)介和用法,有興趣的可以了解一下2017-05-05Android實(shí)現(xiàn)手勢(shì)控制ImageView圖片大小
這篇文章主要介紹了Android實(shí)現(xiàn)手勢(shì)控制ImageView圖片大小的相關(guān)資料,需要的朋友可以參考下2016-02-02