微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于 Firebase 数据 Flutter 的存在导航到屏幕

如何解决基于 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 举报,一经查实,本站将立刻删除。