如需轉載,請註明出處:Flutter學習筆記(31)--異步更新UIhtml
你們都知道,子線程不能操做UI控件,在咱們Android的平常開發中,常常會遇到網絡請求數據經過線程間通訊,將數據發送到UI線程中去更新UI,在Flutter中是如何處理異步更新UI的呢?網絡
今天咱們介紹一下FutureBuilder。app
const FutureBuilder({ Key key, this.future, this.initialData, @required this.builder, })
構造參數說明:異步
feture:接收一個Future對象,用於處理耗時操做。async
initialData:默認數據。ide
builder:widget構建器,會在future的不一樣階段屢次調用。構建器簽名以下:post
Widget Function(BuildContext context, AsyncSnapshot<T> snapshot);
模擬一個網絡請求數據回來後更新UI的場景,先看下總體的示例學習
import 'dart:async'; import 'package:flutter/material.dart'; class FutureBuilderDemo extends StatefulWidget { @override State<StatefulWidget> createState() { return new _FutureBuilderDemoState(); } } class _FutureBuilderDemoState extends State { @override Widget build(BuildContext context) { return MaterialApp( title: 'FutureBuilderDemo', home: new Scaffold( appBar: AppBar( title: new Text('FutureBuilderDemo'), ), body: new Center( child: FutureBuilder<String>( future: mockNetworkData(), initialData: '我是默認的數據', builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasError) { return new Text('erro'); } else { return new Text(snapshot.data); } }, ), ), ), ); } Future<String> mockNetworkData() async { return Future.delayed(Duration(seconds: 11), () => '我是網絡請求的數據'); } }
snapshot:會包含當前異步任務的狀態信息及結果信息 ,好比咱們能夠經過snapshot.connectionState
獲取異步任務的狀態信息、經過snapshot.hasError
判斷異步任務是否有錯誤等等ui
以上就是今天下拉刷新和上拉加載的所有內容了,若是有錯誤的地方或者有任何疑問,歡迎留言!!!this