flutter - 如何等待异步功能在颤振中完成处理
问题描述
我制作initPlatformState
..一个异步函数来检测模拟位置,在initPlatformState
函数过程完成后我需要做一些事情......但问题是......因为initPlatformState
是异步工作并且我没有放入initPlatformState
......initState
将initPlatformState
在之前工作它还没有完成......有没有办法等待initPlatformState
已经完成了这个过程,然后我会做其他事情?这是我的代码
bool canMockLocation=false;
initPlatformState() async {
if (!mounted) return;
try {
canMockLocation = await TrustFall.canMockLocation;
} catch (error) {
print(error);
}
setState(() {
canMockLocation = canMockLocation;
});
}
_getData() async {
setState(() {
load = true;
});
initPlatformState();
setState(() {
load = false;
});
if(canMockLocation){
show alert;
}else{
print("check");
}
这是我的小部件
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
loadLocation
? Text("Loading...")
: Text("Success")
.....
解决方案
在调用此方法的地方添加等待。await 将保持位置直到函数过程未完成。
await initPlatformState();
推荐阅读
- excel - 来自网络抓取的 Excel
- python - 每分钟创建一个移动图,预测 1 分钟后的股价,并使用 R 每分钟更新一个 csv 文件
- heroku - 使用 Node.js 开始 Heroku
- java - Java:如何使用方法正确返回结果
- unit-testing - Symfony PhpUnit 模拟 PHP 内置方法
- javascript - 如何在 Express 中创建临时端点
- postgresql - 如何在 with 语句中动态生成某个表?
- android - Android Studio 的布局编辑器中缺少属性
- javascript - 更改 JS 代码的最简单方法是什么,以便当我插入一个用逗号分隔的条目时,它会将它们显示为单独的列表?
- html - 使用变换构建抽屉