Flutter Firebase RTDB onValue 多次触发
Flutter Firebase RTDB onValue triggered multiple times
我正在开发一个应用程序,它需要来自使用 Firebase RTDB 创建的数据库的实时数据。我使用 onValue 来获取实时数据,问题是当大量数据同时更改时会多次触发 onValue 并弄乱了我的数据处理系统。一直在尝试寻找解决方案,但仍未找到解决方案。任何帮助将不胜感激。这是代码:
await refConnection
.child(user!.uid).orderByChild('date_created').onValue.forEach((element) {
if (element.snapshot.value != null) {
Map<dynamic, dynamic> connection = element.snapshot.value as Map<
dynamic,
dynamic>;
print("Test: $connection");
connection.forEach((key, value) {
if (connection[key]['status'] == 'connected') {
Provider.of<ContactDataProvider>(context, listen: false)
.addConnected(connection[key]);
} else if (connection[key]['status'] == 'incoming_req') {
Provider.of<ContactDataProvider>(context, listen: false)
.addIncoming(connection[key]);
} else if (connection[key]['status'] == 'sent_req') {
print(connection[key]);
Provider.of<ContactDataProvider>(context, listen: false)
.addSent(connection[key]);
}
});
setState();
}
});
您真的需要收听实时更新吗?如果没有,则尝试使用 get()
.
getting the value only once
解决方案:尝试不同的方法
我正在开发一个应用程序,它需要来自使用 Firebase RTDB 创建的数据库的实时数据。我使用 onValue 来获取实时数据,问题是当大量数据同时更改时会多次触发 onValue 并弄乱了我的数据处理系统。一直在尝试寻找解决方案,但仍未找到解决方案。任何帮助将不胜感激。这是代码:
await refConnection
.child(user!.uid).orderByChild('date_created').onValue.forEach((element) {
if (element.snapshot.value != null) {
Map<dynamic, dynamic> connection = element.snapshot.value as Map<
dynamic,
dynamic>;
print("Test: $connection");
connection.forEach((key, value) {
if (connection[key]['status'] == 'connected') {
Provider.of<ContactDataProvider>(context, listen: false)
.addConnected(connection[key]);
} else if (connection[key]['status'] == 'incoming_req') {
Provider.of<ContactDataProvider>(context, listen: false)
.addIncoming(connection[key]);
} else if (connection[key]['status'] == 'sent_req') {
print(connection[key]);
Provider.of<ContactDataProvider>(context, listen: false)
.addSent(connection[key]);
}
});
setState();
}
});
您真的需要收听实时更新吗?如果没有,则尝试使用 get()
.
解决方案:尝试不同的方法