sortFriends function

List<SearchResult<ContactInfo>> sortFriends(
  1. List<SearchResult<ContactInfo>> friends
)

对好友列表进行自定义排序

Implementation

List<SearchResult<ContactInfo>> sortFriends(
    List<SearchResult<ContactInfo>> friends) {
  final sortedFriends = List<SearchResult<ContactInfo>>.from(friends);

  sortedFriends.sort((a, b) {
    final nameA = a.data.getName();
    final nameB = b.data.getName();

    // 空名称处理
    if (nameA.isEmpty && nameB.isEmpty) return 0;
    if (nameA.isEmpty) return 1;
    if (nameB.isEmpty) return -1;

    // 获取排序键
    final sortKeyA = _getSortKey(nameA);
    final sortKeyB = _getSortKey(nameB);

    // 按类型优先级排序:字母/拼音 > 其他字符
    final typeA = _getCharType(nameA);
    final typeB = _getCharType(nameB);

    if (typeA != typeB) {
      return typeA.compareTo(typeB);
    }

    // 同类型按字典序排序
    return sortKeyA.compareTo(sortKeyB);
  });

  return sortedFriends;
}