Flutter和Dart本质上是异步的,使用Dart的Futures,你可以管理IO而无需担心线程或死锁
但是,当涉及到Future时,您应该如何构建Widget?
输入FutureBuilder,处理的Future,就是Futures
FutureBuilder(
future:http.get('http:awesome.data'),
builder:_myBuilderFunction,
)
FutureBuilder可以让你轻松指导Future的当前状态,并选择在数据加载时显示什么内容和加载完成显示的内容
-
首先给一个FutureBuilder一个future
-
然后再给一个builder
-
确保使用connectionState检查future的态
-
再Future loading的时候给一个Widget
-
最好检查一下是否有error,如果有就解决 snapshot.hasError
FutureBuilder( future:http.get('http:awesome.data'), builder:(context, snaphot) { if (snapshot.connectionState == ConnectionState.done){ if (snapshot.hasError) { return SomethingWentWrong(); } else { return AwesomeData(snapshot.data); } } else { return CircularProgressIndicator(); } }
)
你也可以使用其他的ConnectionState
ConnectionState.none
ConnectionState.waiting
ConnectionState.active
ConnectionState.done
如果想了解有关FutureBuilder的内容,或者关于Flutter的其他功能,请访问flutter.io
原文翻译自视频:视频地址