【发布时间】:2019-02-08 23:59:57
【问题描述】:
我正在尝试按时间戳对快照进行排序,但返回原始顺序。
数据结构看起来像这样
我有两个快照,时间戳分别是 -1536025466539 和 -1536025893015。
所以,我希望-1536025893015 在排序后排在第一位。
有谁知道如何正确排序?
代码:
Map<dynamic, dynamic> map = snapshot.data?.snapshot?.value;
map.values.toList().sort((a, b) {
return a['timestamp'].compareTo(b['timestamp']);
// also not work return b['timestamp'].compareTo(a['timestamp']);
});
【问题讨论】:
-
不幸的是,当您调用
snapshot.data?.snapshot?.value;时,生成的Map不再有空间用于项目的顺序。您将需要收听.childAdded事件以维持 Flutter 中项目的价值,至少在此问题得到解决之前:github.com/flutter/flutter/issues/20745。 -
感谢您的评论。所以,基本上你不能迭代,直到它得到修复对吧?
-
正确。但是你可以听
.childAdded来完成同样的onChildAdded。
标签: firebase-realtime-database flutter