【问题标题】:How to reset Firebase listeners in Flutter如何在 Flutter 中重置 Firebase 监听器
【发布时间】:2018-10-03 16:00:15
【问题描述】:

我正在创建一个允许用户拥有多个帐户的 Flutter 应用程序。当用户通过应用程序注销时,它会将他们带到一个登录屏幕,他们可以在该屏幕上登录另一个帐户。我看到的问题是 Firebase 正在提取新的帐户数据并将其与以前的帐户数据合并。我假设听众没有断开导致问题的连接。如何重置 Firebase 侦听器,类似于用户打开应用程序?下面是我的听众的一个例子。感谢您提供任何帮助或建议。

FirebaseDatabase.instance
        .reference()
        .child("accounts")
          ..onChildAdded
              .listen((event) => OnAddedAction(event)))
          ..onChildChanged
              .listen((event) => OnChangedAction(event)))
          ..onChildRemoved
              .listen((event) => OnRemovedAction(event))))); 

【问题讨论】:

    标签: firebase dart flutter


    【解决方案1】:

    您需要存储订阅并在其上调用cancel()

    var ref = FirebaseDatabase
                .instance
                .reference()
                .child("accounts");
    
    var sub1 = ref.onChildAdded
                  .listen((event) => OnAddedAction(event));
    var sub2 = ref..onChildChanged
                  .listen((event) => OnChangedAction(event))
    var sub3 = ref.onChildRemoved
                  .listen((event) => OnRemovedAction(event)); 
    
    ...
    
    @override
    dispose() {
      sub1?.cancel();
      sub2?.cancel();
      sub3?.cancel();
      super.dispose();
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-23
      • 2020-01-16
      • 2020-10-07
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多