Flutter Firebase Database child('.info/connected') 总是返回 true

Posted

技术标签:

【中文标题】Flutter Firebase Database child(\'.info/connected\') 总是返回 true【英文标题】:Flutter Firebase Database child('.info/connected') always returns trueFlutter Firebase Database child('.info/connected') 总是返回 true 【发布时间】:2020-08-23 22:27:22 【问题描述】:

当我按下我的应用程序上的按钮时,我会调用它。

await _rootRef.child(".info/connected").once().then((data)
  print("value: $data.value");
);

data.value 返回 true,无论是我的连接状态。 Ive 数据库持久性为真,并且引用 keepsynced 也为真......但两者都为假,这也会发生! 我需要为此做一个听众或者是怎么回事:(

太棒了

编辑: 数据库和规则,如果对 _rootRef 有任何疑问。它是 FirebaseDatabase.instance.reference()。 您需要的任何其他屏幕或数据我在这里,您的时间。

编辑2: 在这里,您有一个重新创建问题的存储库: https://github.com/rubcc95/flutter-firebase

我还制作了一个关于以下内容的视频: https://www.youtube.com/watch?v=pbrtjS1r5fA

【问题讨论】:

添加你的数据库截图 当然,加了ty。 firebase.google.com/docs/database/android/… .info 是数据库中的一个特殊位置。如果 .info 不存在,我不会收到 bool true,我只会收到 null,所以它存在。 .info/connected 返回的值不依赖于您的 JSON 结构,也不依赖于您的安全规则、磁盘持久性或调用 keepsynced。如果您收到true,则表示客户端已连接到 Firebase 数据库服务器。如果它似乎对您有所不同,请添加minimal, exact/standalone steps that any of use can take to reproduce that behavior。 很抱歉这么长时间才回复,并一如既往地感谢您的宝贵时间。我已经更新了您要求的最低要求...我意识到如果我从 MyHomePage 中删除流,它会在 60 秒后显示为已连接:false。如果我可能将 .info/connect 用作​​错误的目的,这让我回答了,因为我只是想看看我在进行查询时是否与服务器建立了连接。如果 .info/connnected 连接到 Firebase 数据库,无论是缓存还是服务器,也许它会给你一个真实的价值。我现在正在更深入地搜索文档... 【参考方案1】:

你需要听一下 :)

await _rootRef.child(".info/connected").onValue.listen((event) 
        print("value: $event.snapshot.value.toString()");
      );

【讨论】:

以上是关于Flutter Firebase Database child('.info/connected') 总是返回 true的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Firebase Database child('.info/connected') 总是返回 true

在flutter应用程序中从Firebase检索数据时

Flutter Web 应用程序在部署到 Firebase 托管后返回空白页面

从登录用户 Flutter/Firebase 获取文档列表

使用 Flutter 的 Firebase 读/写规则不起作用?

为啥这些 Firestore 规则不适用于 Flutter Firebase 插件?