首页 > 解决方案 > 如何等待异步功能在颤振中完成处理

问题描述

我制作initPlatformState..一个异步函数来检测模拟位置,在initPlatformState函数过程完成后我需要做一些事情......但问题是......因为initPlatformState是异步工作并且我没有放入initPlatformState......initStateinitPlatformState在之前工作它还没有完成......有没有办法等待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")
             .....

标签: flutterasynchronousasync-await

解决方案


在调用此方法的地方添加等待。await 将保持位置直到函数过程未完成。

await initPlatformState();

推荐阅读