Flutter联系人管理插件contacts的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter 联系人管理插件 contacts 的使用

简介

contacts 是一个用于管理联系人的 Flutter 插件。它提供了一套类,可以帮助你轻松地创建、管理和操作联系人信息。这些类的设计参考了 Google Contacts 中可以保存的联系人信息,旨在让你能够以详尽且有组织的方式保存联系人信息。

特性

  • 主要类Contacts 类是该插件的核心类。虽然其他类也可以单独使用,但它们主要是为了配合 Contact 类来形成和交互联系人信息。
  • 详细信息:你可以为联系人保存多种类型的信息,包括地址、聊天记录、自定义字段、电子邮件、事件、网络通话、姓名、备注、组织、电话、相关人物和网站等。

安装

在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  contacts: ^1.0.0

然后运行 flutter pub get 来安装插件。

示例代码

以下是一个完整的示例代码,展示了如何使用 contacts 插件创建一个联系人并访问其部分信息。

创建联系人

import 'package:contacts/contacts.dart';

void main() {
  // 创建一个联系人对象
  final contact = Contact(
    addresses: const [
      Address(
        city: 'city1',
        countryRegion: Country.italy,
        label: 'label1',
        poBox: 'poBox1',
        postalCode: 'postalCode1',
        provinceDepartment: 'provinceDepartment1',
        streetAddress: 'streetAddress1',
        streetAddressLine2: 'streetAddressLine21',
      ),
      Address(
        city: 'city2',
        countryRegion: Country.colombia,
        label: 'label2',
        poBox: 'poBox2',
        postalCode: 'postalCode2',
        provinceDepartment: 'provinceDepartment2',
        streetAddress: 'streetAddress2',
        streetAddressLine2: 'streetAddressLine22',
      ),
    ],
    chats: const [
      Chat(
        chat: 'chat1',
        label: 'label1',
      ),
      Chat(
        chat: 'chat2',
        label: 'label2',
      ),
    ],
    customFields: const [
      CustomField(
        customField: 'customField1',
        label: 'label1',
      ),
      CustomField(
        customField: 'customField2',
        label: 'label2',
      ),
    ],
    emails: const [
      Email(
        email: 'email1',
        label: 'label1',
      ),
      Email(
        email: 'email2',
        label: 'label2',
      ),
    ],
    events: [
      Event(
        event: DateTime(2022),
        label: 'label1',
      ),
      Event(
        event: DateTime(2022, 7),
        label: 'label2',
      ),
    ],
    internetCalls: const [
      InternetCall(
        internetCall: 'internetCall1',
        label: 'label1',
      ),
      InternetCall(
        internetCall: 'internetCall2',
        label: 'label2',
      ),
    ],
    name: const Name(
      fileAs: 'fileAs',
      firstName: 'firstName',
      lastName: 'lastName',
      middleName: 'middleName',
      nickname: 'nickname',
      phoneticFirst: 'phoneticFirst',
      phoneticLast: 'phoneticLast',
      phoneticMiddle: 'phoneticMiddle',
      prefix: 'prefix',
      suffix: 'suffix',
    ),
    notes: 'notes',
    organization: const Organization(
      company: 'company',
      department: 'department',
      jobTitle: 'jobTitle',
    ),
    phones: const [
      Phone(
        phone: 'phone1',
        label: 'label1',
      ),
      Phone(
        phone: 'phone2',
        label: 'label2',
      ),
    ],
    relatedPeople: const [
      RelatedPerson(
        relatedPerson: 'relatedPerson1',
        label: 'label1',
      ),
      RelatedPerson(
        relatedPerson: 'relatedPerson2',
        label: 'label2',
      ),
    ],
    websites: const [
      Website(
        website: 'website1',
        label: 'label1',
      ),
      Website(
        website: 'website2',
        label: 'label2',
      ),
    ],
  );

  // 访问联系人的部分信息
  print('First Name: ${contact.name.firstName}');
  print('Email: ${contact.emails![0].email}');
  print('Phone: ${contact.phones![0].phone}');
}

解释

  1. 导入包:首先导入 contacts 包。
  2. 创建联系人对象:使用 Contact 类创建一个联系人对象,并为其设置各种属性,如地址、电子邮件、电话等。
  3. 访问联系人信息:通过访问 contact 对象的属性来获取联系人的信息,例如姓名、电子邮件和电话。

总结

contacts 插件提供了一个强大的工具集,帮助你在 Flutter 应用中管理和操作联系人信息。通过上述示例,你可以看到如何轻松地创建和访问联系人信息。希望这篇教程对你有所帮助!如果你有任何问题或需要进一步的帮助,请随时提问。


更多关于Flutter联系人管理插件contacts的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter联系人管理插件contacts的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,我可以为你提供一个关于如何在Flutter应用中使用contacts插件来管理联系人的示例代码。这个插件允许你访问设备的联系人信息,并进行读取和写入操作。

首先,你需要在你的pubspec.yaml文件中添加contacts_service依赖:

dependencies:
  flutter:
    sdk: flutter
  contacts_service: ^0.6.3  # 请确保使用最新版本,具体版本可以查看pub.dev上的contacts_service包

然后运行flutter pub get来安装依赖。

接下来,你需要请求联系人权限。在Android和iOS上,这通常需要在各自的配置文件中声明权限。

Android

android/app/src/main/AndroidManifest.xml中添加:

<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>

iOS

ios/Runner/Info.plist中添加:

<key>NSContactsUsageDescription</key>
<string>We need access to your contacts to manage them in the app.</string>

现在,你可以在你的Flutter代码中使用contacts_service插件。以下是一个简单的示例,展示如何请求权限、读取和写入联系人。

import 'package:flutter/material.dart';
import 'package:contacts_service/contacts_service.dart';
import 'package:permission_handler/permission_handler.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ContactManager(),
    );
  }
}

class ContactManager extends StatefulWidget {
  @override
  _ContactManagerState createState() => _ContactManagerState();
}

class _ContactManagerState extends State<ContactManager> {
  List<Contact> contacts = [];

  @override
  void initState() {
    super.initState();
    _requestPermissions();
  }

  Future<void> _requestPermissions() async {
    var status = await Permission.contacts.status;
    if (!status.isGranted) {
      var result = await Permission.contacts.request();
      if (result.isGranted) {
        _getContacts();
      } else if (result.isPermanentlyDenied) {
        // 处理永久拒绝的情况
      }
    } else {
      _getContacts();
    }
  }

  Future<void> _getContacts() async {
    if (await Permission.contacts.isGranted) {
      Iterable<Contact> allContacts = await ContactsService.getContacts(
        withThumbnails: false,
      );
      setState(() {
        contacts = List.from(allContacts);
      });
    }
  }

  Future<void> _addContact() async {
    if (await Permission.contacts.isGranted) {
      Contact newContact = Contact(
        givenName: 'John',
        familyName: 'Doe',
        phones: [Item(label: 'mobile', value: '+1234567890')],
        emails: [Item(label: 'work', value: 'john.doe@example.com')],
      );
      await ContactsService.addContact(newContact);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Contact Manager'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            ElevatedButton(
              onPressed: _getContacts,
              child: Text('Get Contacts'),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: _addContact,
              child: Text('Add Contact'),
            ),
            SizedBox(height: 16),
            Expanded(
              child: ListView.builder(
                itemCount: contacts.length,
                itemBuilder: (context, index) {
                  Contact contact = contacts[index];
                  return ListTile(
                    title: Text('${contact.givenName} ${contact.familyName}'),
                    subtitle: Text(contact.phones.first.value),
                  );
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}

解释

  1. 权限请求:使用permission_handler包请求联系人权限。
  2. 获取联系人:使用ContactsService.getContacts()方法获取设备上的所有联系人。
  3. 添加联系人:使用ContactsService.addContact()方法向设备添加新联系人。

请确保你已经添加了permission_handler依赖到你的pubspec.yaml文件中,并且运行了flutter pub get来安装它:

dependencies:
  permission_handler: ^8.1.4  # 请确保使用最新版本,具体版本可以查看pub.dev上的permission_handler包

这个示例展示了基本的联系人管理操作。你可以根据需要扩展和修改这个示例,以满足你的具体需求。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!