如何对实例类列表进行排序取决于其在飞镖或颤振中的属性[重复]

Posted

技术标签:

【中文标题】如何对实例类列表进行排序取决于其在飞镖或颤振中的属性[重复]【英文标题】:How to sort List of instance class depend on its property in dart or flutter [duplicate] 【发布时间】:2021-11-18 19:42:44 【问题描述】:

我有一个List<Contact>,其中的类联系人如下所示:

class Contact 
    Contact(
        this.id,
        this.name,
        this.phone,
        this.job,
        this.company,
        this.image,
        this.email,
    );

    int? id;
    String? name;
    String? phone;
    String? job;
    String? company;
    String? image;
    String? email;


问题是,如何通过比较 Contact.name 对 List 进行排序? 因为我想按 A-Z 升序对列表进行排序

【问题讨论】:

【参考方案1】:

您可以将比较函数传递给 List.sort。

someObjects.sort((a, b) => a.someProperty.compareTo(b.someProperty));

或列表 mList = (mList..sort()).reversed.toList();

您可以从此链接Sort a list of objects in Flutter (Dart) by property value获得帮助

【讨论】:

好的,但我试过了,结果是这样的错误参数类型'String?'不能分配给参数类型“字符串”。 我该如何解决这个错误? @Dedi 您的.sort 回调需要检查null。例如:list.sort((a, b) final aProperty= a.property; final bProperty = b.property; if (aProperty != null && bProperty != null) return aProperty.compareTo(bProperty); else if (aProperty == bProperty) return 0; else if (aProperty == null) return -1; else return 1; ). 另外,如果您可以使用空字符串而不是null,那会简单得多,然后您就不需要处理String? 感谢您的解释@jamesdin

以上是关于如何对实例类列表进行排序取决于其在飞镖或颤振中的属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在飞镖/颤振中按日期对列表进行排序/排序?

颤振/飞镖中的元组列表

颤振/飞镖格式化数据到实例不起作用

如何在飞镖/颤振中设置或删除地图标记

如何在颤振飞镖中使用相同的元素初始化列表?

如何在颤振/飞镖中缓存列表视图构建器?