欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flutter?Widget之FutureBuilder使用示例詳解

 更新時(shí)間:2022年11月30日 14:54:12   作者:程序員界的小學(xué)生  
這篇文章主要為大家介紹了Flutter?Widget之FutureBuilder使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

本質(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)文章

最新評(píng)論