Диаграмма того, что я хочу сделать] 1
Я хочу перейти к Screen2 с screen1, когда значение screen2_flag изменится на true (в пожарном хранилище облачной базы),
У меня есть экран 1, как показано на диаграмме, который прекрасно работает, пока значение screen2_flag не станет ложным, когда я изменю значение флага с ложного на истинное.
void initState() {
super.initState();
DocumentReference reference =
Firestore.instance.collection('myColection').document('myDoc');
reference.snapshots().listen((querySnapshot) {
print('got sanpshot' + querySnapshot.data['screen2_flag'].toString());
if (querySnapshot.data['screen2_flag'].toString() == 'true') {
Navigator.pushNamed(context, screen2.id);
}
});
Widget build(BuildContext context) {
// my code
...
}
}
Я могу видеть screen2 на моем эмуляторе. Но ошибка «Ошибка ниже» в консоли
[ОШИБКА: flutter / lib / ui / ui_dart_state. cc (157)] Необработанное исключение: аргумент обратного вызова setState () возвратил Future. E / flutter (24551): Метод setState () в _WaitingRoomState # 25dfa был вызван с замыканием или методом, который возвратил Future. Может быть, это помечено как «asyn c». E / flutter (24551): вместо выполнения асинхронной работы внутри вызова setState () сначала выполните эту работу (без обновления состояния виджета), а затем синхронно обновите состояние внутри вызова setState (). E / flutter (24551): # 0 State.setState. (пакет: flutter / src / widgets / framework.dart: 1151: 9) E / flutter (24551): # 1 State.setState (пакет: flutter / src / widgets / framework.dart: 1167: 6)