如何在Flutter中重置Firebase侦听器

Edm*_*ooi 2 dart firebase flutter

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

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

Gün*_*uer 8

您需要存储订阅并调用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();
}
Run Code Online (Sandbox Code Playgroud)