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(), ); } } ) |