我正在使用onValue
侦听器侦听Firebase实时数据库中的节点。我应该按照它们被写入数据库的顺序获得聊天消息,但由于某种原因,我得到了第4条,第1条,第3条,然后是第2条消息。这是为什么呢?
void getChatListener() async {
final node = 'chats';
_groupChatRef = FirebaseDatabase.instance.ref(node);
_chatsSubscription = _groupChatRef.onValue.listen((DatabaseEvent event) {
if (event.snapshot.value != null) {
dataList = [];
final data = event.snapshot.value as Map<dynamic, dynamic>;
data.forEach((key, value) {
dataList.add(value);
});
setState(() {
chats = dataList;
});
}
});
}
//later on the widget builds a ListView using the chats variable
1条答案
按热度按时间c9qzyr3d1#
从Firebase Realtime Database获取数据列表时,
DataSnapshot
包含子节点的三条信息:1.钥匙
1.他们的价值观
1.它们之间的相对顺序
当您在快照上调用
value
时,信息被转换为Map-其中只有键和值的空间。因此,关于订单的信息在此时丢失。要保持顺序,请按照使用
onValue
侦听列表的文档中所示处理子节点: