如何解决基于 Firebase 数据 Flutter 的存在导航到屏幕
在我的 Flutter 应用程序中,我设想根据是否创建了关联的 Firebase 实时数据库中的表来路由已登录的用户。只要有人打开应用程序,就会调用此小部件。我在这方面的第一次尝试涉及使用 StreamBuilder。在我的“authentication.dart”文件中,我有:
Widget build(BuildContext context) {
//Instance to kNow the authentication state.
final firebaseUser = context.watch<User>();
final referenceDatabase = FirebaseDatabase.instance;
if (firebaseUser != null) {
String userID = firebaseUser.uid;
DatabaseReference _ref = referenceDatabase.reference().child(userID);
return Scaffold(
body: StreamBuilder(
stream: _ref.onValue,// ignore: missing_return
builder: (context,snapshot){
if(snapshot.connectionState != ConnectionState.active){
return CircularProgressIndicator();
}
else {
if (snapshot.hasData && snapshot.data.snapshot.value != null) {
print("What is it already: " +
snapshot.connectionState.toString());
return fitnessAppHomeScreen();
}
else {
return DietScreen();
}
这样做似乎带来的许多问题之一是,如果我路由到 DietScreen,并进行更改以导致快照具有数据(在我的情况下,选择饮食计划),我不会认为 StreamBuilder 实际上已经被处理掉了,所以一旦我做出改变,用户就会自动路由到 fitnessAppHomeScreen。有没有办法在路由完成后关闭 StreamBuilder?或者,我应该通过 StreamBuilder 以外的其他东西进行路由吗?我只是在实际检查 Firebase 实时数据库快照中有数据的条件时遇到了麻烦(StreamBuilder 为我提供了一种在小部件中检查它的方法)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。