首页 文章

如何在Flutter中重置Firebase侦听器

提问于
浏览
2

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

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

1 回答

  • 5

    您需要存储订阅并在其上调用 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.cnacel();
      super.dispose();
    }
    

相关问题