我正在一个项目中,我需要对其中包含对象的列表进行排序,但是它给出了错误。
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集合中的文档未按时间顺序添加。因此,我必须手动执行此操作。有谁知道为什么不按时间顺序对它们进行默认排序?
谢谢。
答案 0 :(得分:1)
sort方法不返回列表,它是一个无效函数。您应该这样:
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)));