Как ждать асин c функция завершена обработка в флаттер - PullRequest
1 голос
/ 29 апреля 2020

Я делаю initPlatformState .. асинхронную c функцию для определения местоположения макета, и после завершения функции 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")
             .....

1 Ответ

1 голос
/ 29 апреля 2020

добавьте ожидание, где вы вызываете этот метод. await будет удерживать позицию, пока не завершится процесс функции.

await initPlatformState();
...