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

如何从FlutterContacts获取的联系人列表中提取指定属性?

只保留FlutterContacts联系人的显示名称、电话和邮箱属性

你可以通过映射原始Contact对象到自定义简化数据类的方式,只保留需要的属性,过滤掉冗余字段。具体步骤如下:

  1. 定义一个只包含目标属性的自定义类(类型更安全,也可以用Map替代):
class SimplifiedContact {
  final String displayName;
  final List<String> phoneNumbers;
  final List<String> emails;

  SimplifiedContact({
    required this.displayName,
    required this.phoneNumbers,
    required this.emails,
  });
}
  1. 遍历获取到的原始联系人列表,提取需要的字段并转换为简化类实例:
// 获取原始联系人列表
List<Contact>? contactsList = await FlutterContacts.getContacts(
  withProperties: true,
  withPhoto: false,
);

// 转换为仅含目标属性的简化列表
List<SimplifiedContact>? simplifiedContacts;
if (contactsList != null) {
  simplifiedContacts = contactsList.map((contact) {
    // 提取所有电话号码的字符串值
    final phones = contact.phones.map((phone) => phone.number).toList();
    // 提取所有邮箱地址的字符串值
    final emails = contact.emails.map((email) => email.address).toList();
    
    return SimplifiedContact(
      displayName: contact.displayName,
      phoneNumbers: phones,
      emails: emails,
    );
  }).toList();
}

说明

  • 转换后的simplifiedContacts列表仅包含你需要的显示名称、电话号码和邮箱,其他属性(如地址、组织、生日等)都会被自动忽略。
  • 如果某个联系人没有电话或邮箱,对应的列表会是空数组,不会出现空值异常。
  • 若不需要强类型,也可以直接用Map<String, dynamic>存储每个简化后的联系人,但自定义类能提供更好的类型检查和代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:02:42