如何在Flatter中重置Firebase侦听器

如何在Flatter中重置Firebase侦听器,firebase,dart,flutter,Firebase,Dart,Flutter,我正在创建一个Flitter应用程序,允许用户拥有多个帐户。当用户通过应用程序注销时,它会将他们带到登录屏幕,他们可以登录到另一个帐户。我看到的问题是firebase正在引入新的帐户数据,并将其与以前的帐户数据合并。我假设侦听器没有断开连接,这导致了问题。如何重置Firebase侦听器(与打开应用程序的用户类似)?下面是我的听众的一个例子。谢谢你的帮助和建议 FirebaseDatabase.instance .reference() .child("accoun

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

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

您需要存储订阅并对其调用
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();
}