Асинхронная загрузка двух зависимых потоков при использовании 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".