flutter - Flutter Firebase 在 push 和 pop 操作后停止监听
问题描述
我正在使用 on child added listener 和 on child changed listener 将 Firebase 数据保存在列表中,它运行良好,但是当我执行推送操作并使用 pop 返回屏幕时,听众停止收听。有什么解决方案可以解决这个问题。
我使用了 Stackoverflow 中的这段代码:代码
解决方案
对不起这个愚蠢的帖子,我是新手,我通过在听众中使用 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();
}
推荐阅读
- amazon-web-services - 自动将 DynamoDB 表导出到 S3
- python - 更改系列中的值
- excel - ActiveX 组件无法创建对象 - 429
- java - RecyclerView 只显示一个值
- android - java.lang.NoClassDefFoundError:在 Firebase 测试实验室上运行记录的 Robo 测试时无法解决:Landroid/support/v7/widget/RecyclerView
- xml - 我如何将字符串放入 XmlDocument 中的 XmlElement
- cloudfoundry-uaa - 如何将 UAA 日志级别从 DEBUG 更改为 INFO?
- ios - ViewController 的背景颜色在 viewDidLoad() 中没有改变
- delphi - 我无法修复错误 SSL 例程:SSL23_GET_SERVER_HELLO:unknown protocol
- javascript - 当我单击 div 时如何隐藏/显示兄弟姐妹 div