Хм ... Мне кажется, вы ожидаете получить данные, когда пользователь нажмет на FlatButton
.
Давайте посмотрим, что происходит:
- нажмите на FlatButton
- Создание экземпляра
StreamBuilder
- Начните получать данные из Firestore
- Сделайте немного магии Firestore, дата обновления
- Затем закройте диалог по
navigator.pop()
Проблема: Вы звоните navigator.pop()
сразу после установления StreamBuilder
. StreamBuilder должен немного подождать, чтобы получить данные. Если вы выдвигаете маршрут, и с этим уничтожаете диалоговое окно с предупреждением, обратный вызов компоновщика вызываться не будет. Итак, фактическая последовательность происходящих событий: Tap -> Instantiate StreamBuilder -> pop route
Рекомендация: зачем переносить вычисления в StreamBuilder? Вы могли бы сделать:
onPressed: () {
Firestore.instance.collection('users')/*...*/.snapshots().then((snapshot) async {
// then branch is executed once snapshot is retrieved from firestore
var TypeSelfFilters = snapshot.data;
// do some more computation and magic
await Firestore.instance.collection/*...*/.updateData();
// wait for updateData to finish
Navigator.pop(context); // this context is not the context inside the StreamBuilder
});
}