asynchronous - 如何在执行下一条指令之前完成异步 Future 任务 Flutter

标签 asynchronous dart flutter dart-async

我对我的数据库进行了一个函数调用,它在获取数据后更新了一个本地对象并花费了一些时间。

由于异步任务,程序移动到下一行代码。不幸的是,我需要通过下一行代码的异步调用更新的本地对象。

如何在执行下一段代码之前等待我的异步任务完成?谢谢

编辑:添加代码解释

updateUser() {
return FutureBuilder(
        future: updateUserData(),
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          if (snapshot.connectionState != ConnectionState.done) {
            return Text("hello not");
          } else {
            return Text('Hello!');
          }
        },

);}

  @override
  Widget build(BuildContext context) {
    switch (_authStatus) {
      case AuthStatus.notSignedIn:
        return new LoginPage(
          auth: auth,
          CurrentUser: CurrentUser,
          onSignedIn: _signedIn,
        );
      case AuthStatus.signedIn:
        {
          updateUser(); //THIS TAKES A COUPLE SECONDS TO FINISH BUT I NEED TO SEND IT TO THE NEXT PAGE

            return new HomePage(
              auth: auth,
              CurrentUser: CurrentUser,
              onSignedOut: _signedOut,
            );
          }
        }
    }
  }

最佳答案

您可以在async 函数中使用await 关键字。

例如:

  void someFunc() async {
    await someFutureFunction();
    // Your block of code
  }

这里你的代码块不会运行,直到 someFutureFunction 返回一些东西。

关于asynchronous - 如何在执行下一条指令之前完成异步 Future 任务 Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52510979/

相关文章:

android - Mac OS Flutter 构建 appbundle 失败 : Invalid keystore format

c# multithreading发送3个不同的线程

c# - 将任务按完成顺序排序

dart - asm/socket.h : No such file or directory cross compiling Dart for Raspberry pi

string - dart中如何将字符串的首字母大写?

flutter - 乌克兰移动应用支付网关

flutter - 如果应用程序通过该链接关闭和打开,则FireInitialLink不会捕获Firebase动态链接

android - Flutter CachedNetworkImage 不适用于从 playstore 下载的 App,卡在占位符上

objective-c - UITableView - 在不阻塞主线程的情况下从 NSBundle 加载大型 UIImages

c# - 将 CurrentCulture 保持在异步/等待状态