Асинхронная загрузка двух зависимых потоков при использовании FutureBuilder

В довольно сложном листе я использую 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".

0 ответов

Другие вопросы по тегам