我有一个FutureBuilder,它的未来是从Firestore请求一个布尔值。但是当我更新这个值时(hasAccountSetup变为true),什么都没有发生,直到我快速重新加载应用程序。
我不知道在这种情况下是否应该使用FutureBuilder,但目标是在我将firebase数据库中的hasAccountSetup更新为true后,应用程序立即返回HomePage()。
Future<bool> _getCurrentUserData() async {
final DocumentSnapshot userDoc = await FirebaseFirestore.instance
.collection('Users')
.doc(Auth().currentUser!.uid)
.get();
return userDoc.get('HasSetupAccount');
}
class _WidgetTreeState extends State<WidgetTree> {
@override
//construtor da class?
Widget build(BuildContext context) {
return StreamBuilder(
stream: Auth().authStateChanges,
builder: (context, snapshot) {
if (snapshot.hasData) {
return FutureBuilder(
future: _getCurrentUserData(),
builder: ((context, AsyncSnapshot<bool> hasAccountSetup) {
if (hasAccountSetup.data == true) {
return MyHomePage();
} else {
return AccountSetup();
}
}));
} else {
return LoginPage();
}
},
);
}
1条答案
按热度按时间agxfikkp1#
您正在使用
StreamBuilder
,但流不是stream
,而是future
。请看
streamBuilder
的示例:如果没有reload
,您可以在这里直接监听文档中发生的任何更改。根据您的需要调整此设置。