Схема того, что я хочу сделать] 1
Я хочу перейти к Screen2 с screen1, когда значение screen2_flag изменится на true (в облачном хранилище firebase),
У меня есть экран 1, как показано на диаграмме, который отлично работает до тех пор, пока значение screen2_flag не станет ложным, когда я изменяю значение flag с false на true.
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. Может быть, он помечен как «асинхронный». 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)