如何在flutter中等待异步函数处理完毕。

问题描述 投票:0回答:1

我做 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")
             .....
flutter asynchronous async-await
1个回答
1
投票

在调用这个方法的地方加上 await, await 将保持位置直到函数过程没有完成。

await initPlatformState();
© www.soinside.com 2019 - 2024. All rights reserved.