Как убедиться, что 2 асинхронные функции выполняются до того, как состояние соединения будет выполнено? - PullRequest
0 голосов
/ 05 апреля 2019

Я использую FutureBuilder, как это -

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

В initState, я звоню _future = getData();

getData вызывает два асинхронныхфункции, которые вызываются только после установления состояния соединения.Какую проверку я должен поставить, чтобы убедиться, что индикатор выполнения отображается, пока обе функции не будут выполнены?

Ответы [ 2 ]

1 голос
/ 06 апреля 2019

Если предположить, что порядок выполнения ваших асинхронных функций не важен, вы можете сделать что-то вроде:

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

В этом случае yourAsyncFunc1() и yourAsyncFunc2() - это функции async, которые вы вызываете внутри функции getData. Вызов Future.wait(..., ...) немедленно возвращает объект будущего, но это будущее завершается только после выполнения yourAsyncFunc1 и yourAsyncFunc2. Таким образом, вы можете использовать виджет FutureBuilder с _future в свойстве future и посмотреть результаты.

0 голосов
/ 05 апреля 2019

Использование асинхронной функции с ожиданием.

Что-то вроде

Future<void> getData() async {
  await future1Function();
  await future2Function();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...