首页 > 解决方案 > 无法对颤动的对象列表进行排序

问题描述

我正在做一个项目,我需要对其中包含对象的列表进行排序,但它给出了错误。

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 集合中的文档没有按时间顺序添加。所以,我必须手动完成。有谁知道为什么他们没有按时间顺序默认排序?

提前致谢。

标签: firebasesortingflutterdartgoogle-cloud-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)));

推荐阅读