我正在创建一个允许用户拥有多个帐户的Flutter应用。当用户通过应用程序注销时,它会将他们带到登录屏幕,然后他们可以登录到另一个帐户。我看到的问题是firebase正在提取新帐户数据并将其与之前的帐户数据合并。我假设听众没有断开连接导致问题。如何重置与打开应用程序的用户类似的Firebase侦听器?以下是我的听众的一个例子。感谢您提供任何帮助或建议。
FirebaseDatabase.instance
.reference()
.child("accounts")
..onChildAdded
.listen((event) => OnAddedAction(event)))
..onChildChanged
.listen((event) => OnChangedAction(event)))
..onChildRemoved
.listen((event) => OnRemovedAction(event)))));
答案 0 :(得分:6)
您需要存储订阅并在其上调用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();
}