首页 > 解决方案 > Flutter Firebase 在 push 和 pop 操作后停止监听

问题描述

我正在使用 on child added listener 和 on child changed listener 将 Firebase 数据保存在列表中,它运行良好,但是当我执行推送操作并使用 pop 返回屏幕时,听众停止收听。有什么解决方案可以解决这个问题。

我使用了 Stackoverflow 中的这段代码:代码

标签: flutterfirebase-realtime-databasedart

解决方案


对不起这个愚蠢的帖子,我是新手,我通过在听众中使用 Future 方法解决了这个问题。

@GrahamD 你可以在这里找到我的代码。

我的代码:

var childAddedListener;
var childChangedListener;

@override

无效初始化状态(){

FirebaseDatabase database;
database = FirebaseDatabase.instance;
database.setPersistenceEnabled(true);
database.setPersistenceCacheSizeBytes(10000000);

reference = database.reference().child('Sweets');
childAddedListener = reference.onChildAdded.listen(_onEntryAddedShop);
childChangedListener = reference.onChildChanged.listen(_onEntryChangedShop);

super.initState();

}

在子添加侦听器

Future _onEntryAddedShop(Event event) {
setState(() {
  itemsShop.add(Sweets.fromSnapshot(event.snapshot));
});

}

On Child 改变了听众

Future _onEntryChangedShop(Event event) {
print('Child Changed');
var old = itemsShop.singleWhere((entry) {
  return entry.id == event.snapshot.key;
});
setState(() {
  itemsShop[itemsShop.indexOf(old)] = Sweets.fromSnapshot(event.snapshot);
});
getItemIds();

}

在 dispose 中取消它们

@override
dispose() {
  childAddedListener.cancel();
  childChangedListener.cancel();
  super.dispose();
}

推荐阅读