原文参考:
作者:天色将变
链接:https://www.jianshu.com/p/304f05a442db
来源:简书
1.概述
- Dart通常是单线程执行。
- 如果是执行的网络请求、访问数据库或文件等,那么方法不会立刻返回结果,需要一定的执行时间。这时不能一直等待,这种情况,可以用Future描述未来的结果。
2.Future基本使用
// 假设method1是网络请求
Future<String> f1 = new Future(method1);//此时f1就是未来的结果
// 未来的结果获取,使用then
f1.then((String value) {
print("value1=$value");
});
3.async 与await 将异步方法按同步方法操作
async 描述一个执行异步操作的方法
await 表示一直等待异步方法返回结果,才继续往后执行
如:
Future<String> method5() async {
return "5";
}
void testD() async {
method1();
String f5 = await method5();
print(f5);
method3();
}
结果:
1
5
3
4. Future的一些作用
- Future.delayed
Future<void> hideScreen() async {
Future.delayed(Duration(seconds: 10), () {
FlutterSplashScreen.hide();
});
}
- Future.value
Future<bool> exitApp() {
if (_lastPressedAt == null ||
DateTime.now().difference(_lastPressedAt) > Duration(seconds: 2)) {
Fluttertoast.showToast(
msg: "再按一次退出应用",
backgroundColor: Colors.grey,
toastLength: Toast.LENGTH_SHORT,
fontSize: 14);
//两次点击间隔超过2秒则重新计时
_lastPressedAt = DateTime.now();
return Future.value(false);
}
return Future.value(true);
}
网友评论