当前位置: 首页 > 知识库问答 >
问题:

如何在执行下一个指令Flutter之前完成异步未来任务

申黎明
2023-03-14
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,
            );
          }
        }
    }
  }

共有1个答案

龙繁
2023-03-14

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

例如:

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

在这里,您的代码块不会运行,直到某个FutureFunction返回某个内容。

 类似资料:
  • 我已经创建了3个任务。Task3取决于Task1和Task2的结果。在调试代码时,它会正确执行,但在运行应用程序时,Task3会在Task1和Task2完成之前执行。 示例代码: 提前谢谢。

  • 我正在尝试使用Complettable Future异步运行两个任务。该程序异步运行,因此a()和b()以任何顺序同时首先运行。但是c()只能在a()或b()之一完成后运行 我不熟悉CompletableFuture API,有没有办法检查其中一个任务是否完成并调用下一个方法C?

  • 问题内容: 我正在寻找写两个角度指令,一个父指令和一个子指令,以创建可排序和可克隆的小部件。预期的标记是: 但是,子指令似乎在父元素之前,某个元素可用之前执行(子元素由父元素添加): 如您所见,我尝试设置优先级,但我认为由于它们位于不同的元素上,因此无法正常工作。 如何让父母先执行? 问题答案: 推理 以相反的顺序执行,这意味着子指令将在父指令之前(即深度优先)被调用。由于某种原因,这是默认行为(

  • 我正在试验Python 3.4的asyncio模块。由于没有使用asyncio的MongoDB生产就绪包,我编写了一个小包装类,在执行器中执行所有mongo查询。这是包装: 我想异步执行插入,这意味着执行它们的协程不想等待执行完成。asyncio手册声明,所以我构造了这个测试脚本: 当我运行脚本时,我得到以下结果: 应该有一行指示mongo查询已完成。当我从这个协程而不是使用异步IO运行它时,我可

  • 当用户无法登录他们的帐户时,我正在尝试执行警报。也就是说,当我尝试使用下面的代码完成此操作时,我会抛出以下错误: 原因:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程[AsyncTask#1,5,main]内创建处理程序 我怎样才能解决这个问题?请参阅下面的代码。 登录活动

  • 我想要一个完整的未来,只发出完成的信号(例如,我没有返回值)。 我可以将CompletableFuture实例化为: 但是我应该向完整的方法提供什么呢?例如,我不能做