【问题标题】:firebase_database online / offline statusfirebase_database 在线/离线状态
【发布时间】:2018-10-20 08:33:55
【问题描述】:

在使用firebase和flutter-fire firebase_database插件时,如何判断我们的flutter应用是在线还是离线?

这篇博文 (https://firebase.googleblog.com/2013/06/how-to-build-presence-system.html) 展示了在应用上线/下线时使用“.info/connected”子节点获取事件。但是,它似乎只在应用启动时触发一次,仅此而已。

我正在使用这个:

void initState() {
    super.initState();

    print('Setting up the connected handler');
    final amOnline = FirebaseDatabase.instance.reference().child('.info/connected');
    _amOnlineSubscription = amOnline.onValue.listen((Event event) {
      print('EVENT has occured');
    });
  }

也许有更好的方法来确定在线/离线状态?我想要做的是在设备离线时避免登录页面。然而,一旦它再次连接到 Firebase,就强制登录......

【问题讨论】:

  • 好吧,我刚刚发现上面的代码在真正的手机上确实有效。我在模拟器中进行测试并关闭了笔记本电脑的 wifi,但由于某种原因,它没有在 firebase 中注册为未连接。
  • 我还发现了这个颤振插件,它允许你订阅一个流,让你知道连接状态:连接。我会把这个问题留在这里,以防有人知道更好或更合适的方法......
  • 嗨,Jason,你说的是插件,但是什么插件?您能否提供一个答案,因为我认为您可能需要做一个观察者,所以请您如何管理?
  • 这是我上面的第二条评论。该插件称为“连接性”。

标签: flutter


【解决方案1】:

我在我的应用程序上使用connectivity_plus 插件来检查应用程序是否有活动的网络连接。这样,您无需使用 firebase_database 来检查设备的连接性。

您可以在应用的 initState() 中添加它

@override
initState() {
  super.initState();

  subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
    // Check connectivity status
  })
}

并确保在完成后取消订阅。

@override
dispose() {
  super.dispose();

  subscription.cancel();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多