[英]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.