Flutter?Widget之FutureBuilder使用示例詳解
正文
本質(zhì)上Flutter和Dart是異步的,Dart是Futures使你能夠管理IO而不用擔(dān)心線程或死鎖。

例如,從應(yīng)用程序外部加載數(shù)據(jù)需要時(shí)間,而Futures允許Dart先處理其他任務(wù)直到請求的數(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í)都會重新開始獲取數(shù)據(jù)。

相反,早些獲得Future,就像在小部件生命周期方法一樣
initState didUpdateWidget didChangeDependencies
因此,創(chuàng)建新的狀態(tài)變量并將此數(shù)據(jù)獲取請求,從FutureBuilder移到initState,在那里我們會給它一個(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í)最好檢查有沒有發(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的其他功能,請?jiān)L問flutter.dev
以上就是Flutter Widget之FutureBuilder使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Flutter Widget FutureBuilder的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
android studio 新手入門教程(二)項(xiàng)目的導(dǎo)入教程圖解
這篇文章主要介紹了android studio 新手入門教程(二)項(xiàng)目的導(dǎo)入教程圖解,需要的朋友可以參考下2017-12-12
Android自定義有限制區(qū)域圖例角度自識別涂鴉工具類中篇
這篇文章主要為大家介紹了Android自定義有限制區(qū)域圖例角度自識別涂鴉工具類詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Android登錄注冊功能 數(shù)據(jù)庫SQLite驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了Android登錄注冊功能,數(shù)據(jù)庫SQLite驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
Android實(shí)現(xiàn)Back功能代碼片段總結(jié)
今天把在公司實(shí)現(xiàn)某功能所用到的Back鍵功能模塊代碼片段做一個(gè)整理。方便以后直接拿出來使用2014-09-09
Android實(shí)現(xiàn)合并生成分享圖片功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)合并生成分享圖片功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
Android?Flutter實(shí)現(xiàn)"斑馬紋"背景的示例代碼
本文將通過實(shí)現(xiàn)一個(gè)canvas繪制斑馬紋類。使用Stack布局,將斑馬紋放在下方作為背景板,需要展示的內(nèi)容在上方。從而實(shí)現(xiàn)?“斑馬紋”背景,感興趣的可以了解一下2022-06-06
Android開發(fā)之時(shí)間日期組件用法實(shí)例
這篇文章主要介紹了Android開發(fā)之時(shí)間日期組件用法,主要介紹了TimePicker和DatePicker組件,對于Android程序開發(fā)有不錯(cuò)的借鑒價(jià)值,需要的朋友可以參考下2014-08-08

