如何确定连接状态完成之前执行2个异步功能?

时间:2019-04-05 17:31:18

标签: asynchronous dart flutter

我正在这样使用FutureBuilder-

FutureBuilder( future: _future, builder: (BuildContext context, AsyncSnapshot snapshot) { return snapshot.connectionState != ConnectionState.done ? CircularProgressIndicator() : Text('Done'); }, ),

initState中,我打电话给_future = getData();

getData调用两个异步函数,仅在连接状态完成后才被调用。在执行两个功能之前,我应该进行哪些检查以确保显示进度指示器?

2 个答案:

答案 0 :(得分:1)

假设异步函数的执行顺序并不重要,您可以执行以下操作:

initState(){
    _future = Future.wait( [yourAsyncFunc1(), yourAsyncFunc2()] );
 }

在这种情况下,yourAsyncFunc1()yourAsyncFunc2()是您在async函数内部调用的getData函数。 Future.wait(..., ...)调用会立即返回一个将来的对象,但是只有在完成yourAsyncFunc1yourAsyncFunc2执行之后,此将来才完成。因此,您可以将FutureBuilder小部件与_future属性中的future一起使用,并查看结果。

答案 1 :(得分:-1)

在等待时使用异步功能。

类似

Future<void> getData() async {
  await future1Function();
  await future2Function();
}