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