1、什么事Future?
? ? ? ? 表示在某个时间的值或者错误,借助Future我们可以实现Flutter的异步操作,类似ES6中的Promise,提供then和catchError的链式调用。
? ? ? ? 它是dart:async包中的一个类,使用时需导入dart:async包,它有两种状态:pending(执行中)和completed(执行结束)
2、Future常见用法?
? ? ? ? 使用future.then获取future的值与捕获的异常
? ? ? ? 组合async,await
? ? ? ? future.whenComplete、future.timeout
Future<String> test(){
// Future.error("error");
return Future.value("success");
}
test2() {
test().then((value) => {
print(value)
}, onError: (e) {
print("onError $e");
}).catchError((e){
print("catchError $e");
});
}
如果catchError和onError同时存在,则只会调用onError,一个没有才会调用另一个
3、什么是FutureBuilder?
? ? ? ? 是一个将异步操作和异步UI更新结合在一起的类,通过它可以将网络请求和数据库读取等结果更新到页面上
4、FutureBuilder常见用法?
return Scaffold(
body: FutureBuilder<String>(
future: test(),
builder: (BuildContext context, AsyncSnapshot<String> snap) {
if (snap == "success") {}
},
));
|