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

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

我正在使用这样的FutureBuilder -

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

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

getData调用两个异步函数,只有在连接状态完成后才会调用它们。我应该检查什么以确保在两个函数执行之前显示进度指示器?

asynchronous dart flutter
2个回答
1
投票

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

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

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


-1
投票

等待使用异步功能。

就像是

Future<void> getData() async {
  await future1Function();
  await future2Function();
}
© www.soinside.com 2019 - 2024. All rights reserved.