无法排序颤动中的对象列表

时间:2019-12-03 12:36:35

标签: firebase sorting flutter dart google-cloud-firestore

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

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集合中的文档未按时间顺序添加。因此,我必须手动执行此操作。有谁知道为什么不按时间顺序对它们进行默认排序?

谢谢。

1 个答案:

答案 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)));