Асинхронная загрузка двух зависимых потоков при использовании FutureBuilder - PullRequest
0 голосов
/ 27 февраля 2019

На довольно сложном листе я использую FutureBuilder и Listview.builder, которые помогают мне перечислить все группы вокруг меня (используя поиск по Алголии), который выглядит следующим образом:

future = _algolia
              .index('groups')
              .setAroundLatLng(
                  '${_startLocation.latitude.toString()}, ${_startLocation.longitude.toString()}')
              .setFacetFilter("category:$category")
              .search(_query)
              .setHitsPerPage(1000)
              .getObjects();

Теперь,Я также хочу включить totalUsers для каждой группы.Проблема: они сохраняются в Firestore (groups / groupId / totalUsers).Теперь для Firestore, когда мне нужно запросить totalUsers, я должен сдать каждый groupId (который поступает в асинхронном режиме из Алголии и просто доступен в FutureBuilder как document.data['groupId']).Поэтому я попытался вызвать totalUsers из ListTile в FutureBuilder, с getTotalUsers(document.data['groupId']), и

  getTotalUsers(groupId) async{
    DocumentReference reference =
    Firestore.instance.collection('groups').document(groupId.toString());
    DocumentSnapshot snapshot;
    snapshot = await reference.get();
    return snapshot['totalUsers'];
  }

... но так как это асинхронно, это просто дает мне «Экземпляр будущего».Теперь, какой самый простой способ включить totalUsers и «ждать» его из дерева виджетов?Я думаю, что не могу загрузить его в initstate, так как сначала я должен передать конкретные идентификаторы пользователей из групп 'aroundme'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...