Dart 语言和 JS 一样都是单线程 + 事件循环模式, 执行时机也和JS的 event Loop 一致
返回 异步的 future
Future <String> xxx(
return Future((){
return "xxx"
})
)
xxx() async{
xxx().then((value){print(value)})
}
返回指定的 Future
Future <String> xxx{
return Future.value("hello")
}
返回延时的 Future
return Future.delayed(Duration(seconds:3),(){
return "Hello"
})
监听异常
.catchError((err){}) // 错误的回调
.whenComPlete((){}) // 无论成功失败都会触发
async & await
xxx() async{
var res = await xxx()
print(res)
}
FutureBuilder
自动追踪 Future 的状态信息,会自动重绘组件
Future <String> loadData()async{
await Future.delayed(const Duration(secods:2));// 等待2秒
return "this is data"
}
FutureBuild(
future:loadData(),
builder:(BUildContext context,AsyncSnapshot<String> snapshot){
// 检查 ConnectionState 是否未done
if(snapshot.connectionState == ConnectionState.done){
if (snapshot.hasError) {
return Center(
child: Text("ERROR: ${snapshot.error}"),
);
}else{
return Center(child: Text("DATA: ${snapshot.data}"));
}
}else{
return const Center(
child: CircularProgressIndicator(),
);
}
}
)