You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart/Flutter中如何按name属性对Contact实例列表做A-Z升序排序

按name属性A-Z升序排列Contact列表的实现方法

Dart的List类型内置sort()方法,支持传入自定义比较器实现指定规则排序。由于你定义的Contact类中name为可空字符串类型,排序时需要额外处理空值场景,示例代码如下:

// 假设你已初始化得到Contact类型的列表
List<Contact> contacts = [...];

contacts.sort((a, b) {
  // 处理name为空的情况:空name默认排到列表末尾,如需排到开头可调整返回值
  if (a.name == null && b.name == null) return 0;
  if (a.name == null) return 1;
  if (b.name == null) return -1;
  // 两个name都不为空时按A-Z升序比较
  return a.name!.compareTo(b.name!);
});

如果需要忽略大小写排序(比如Apple和ant视为同级排序),可以把最后一行比较逻辑修改为:

return a.name!.toLowerCase().compareTo(b.name!.toLowerCase());

注意:sort()方法会直接修改原列表,如果需要保留原列表不变,可以先拷贝一份再执行排序:

final sortedContacts = List<Contact>.from(contacts)..sort((a, b) {
  if (a.name == null && b.name == null) return 0;
  if (a.name == null) return 1;
  if (b.name == null) return -1;
  return a.name!.compareTo(b.name!);
});

内容的提问来源于stack exchange,提问作者Dedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:48:03