import 'package:flutter_contacts/contact.dart'; import 'package:flutter_contacts/flutter_contacts.dart'; import 'package:get/get.dart'; class ContactState { static RxList contactList = [].obs; static RxList initials = [].obs; static RxMap> groupedContacts = >{}.obs; static RxList selectedContact = [].obs; static Future loadContacts() async { await getContacts(); ContactState.groupedContacts.value = groupContactsByInitial(ContactState.contactList); ContactState.initials.value = ContactState.groupedContacts.keys.toList()..sort(); } static Future getContacts() async { // 获取所有联系人 List contacts = await FlutterContacts.getContacts( withProperties: true, withPhoto: true, ); // 按名字的首字母排序 contacts.sort((a, b) => (a.displayName ?? '').compareTo(b.displayName ?? '')); ContactState.contactList.value = contacts; } static Map> groupContactsByInitial(List contacts) { Map> groupedContacts = {}; for (var contact in contacts) { String initial = (contact.displayName ?? '').isNotEmpty ? contact.displayName[0].toUpperCase() : '#'; if (!groupedContacts.containsKey(initial)) { groupedContacts[initial] = []; } groupedContacts[initial]!.add(contact); } return groupedContacts; } }