[英]Flutter Navigation from Firestore Flag
我想做什么的圖表] 1
當 screen2_flag 的值更改為 true 時(在 firebase cloud firestore 上),我想從 screen1 導航到 Screen2,
我有如圖所示的屏幕 1,當我將 flag 的值從 false 更改為 true 時,它工作得非常好,直到 screen2_flag 的值為 false。
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):_WaitingRoomState#25dfa 上的 setState() 方法被調用了一個閉包或返回 Future 的方法。 也許它被標記為“異步”。 E/flutter (24551):不是在 setState() 調用中執行異步工作,而是首先執行工作(不更新小部件狀態),然后在 setState() 調用中同步更新 state。 E/顫振(24551):#0 State.setState。 (package:flutter/src/widgets/framework.dart:1151:9) E/flutter (24551): #1 State.setState (package:flutter/src/widgets/framework.dart:1167:6)
錯誤告訴你問題:
setState() 回調參數返回一個 Future
_WaitingRoomState#25dfa 上的 setState() 方法是使用返回 Future 的閉包或方法調用的
並告訴你解決方案:
不要在 setState() 調用中執行異步工作,而是先執行該工作(不更新小部件狀態),然后在 setState() 調用中同步更新 state
所以你進行異步調用,等待它直到你得到標志值(我猜是因為你沒有顯示那部分代碼),然后調用setState()
更新新值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.