firebase - 无法对颤动的对象列表进行排序
问题描述
我正在做一个项目,我需要对其中包含对象的列表进行排序,但它给出了错误。
The expression here has a type of 'void', and therefore can't be used.
这是我的代码: -
@override
void initState() {
super.initState();
subscription = collectionReference.snapshots().listen((datasnapshot) {
setState(() {
messageList = datasnapshot.documents
.map(
(v) => Message(
message: v.data['msg'],
sender: v.data['sender'],
imgUrl: v.data['imgUrl'],
id: v.data['id']),
)
.toList().sort((m, m2) => int.parse(m.id).compareTo(int.parse(m2.id)));
});
});
}
它在排序方法中引发错误:-
.toList().sort((m, m2) => int.parse(m.id).compareTo(int.parse(m2.id)));
我应该怎么做才能修复它,或者有没有其他方法可以对对象列表进行排序。
还有一个额外的问题。我的 Firestore 集合中的文档没有按时间顺序添加。所以,我必须手动完成。有谁知道为什么他们没有按时间顺序默认排序?
提前致谢。
解决方案
sort 方法不返回列表,它是一个 void 函数。你应该这样做:
messageList = datasnapshot.documents
.map(
(v) => Message(
message: v.data['msg'],
sender: v.data['sender'],
imgUrl: v.data['imgUrl'],
id: v.data['id']),
)
.toList()
messageList.sort((m, m2) => int.parse(m.id).compareTo(int.parse(m2.id)));
推荐阅读
- amazon-dynamodb - 使用相同的 DynamoDB 属性作为 HASH 和 RANGE 键
- php - 两个面板之间的php会话问题
- javascript - Leaflet map not updating view
- javascript - Promise.All 用于图像列表
- facebook-graph-api - facebook 图形 api 页面 发布消息
- html - 在表单中按 Enter 未按预期提交
- android - RecyclerView OnItemClick 根据查询的来源打开不同的活动
- java - 如何确保 switch/case 语句具有使用枚举等所有选项?
- html - 为什么我的响应式网站在移动设备上放大了?
- scala - Scala类型不匹配的除法