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

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

newcontact

打开iOS或Android设备上的原生创建联系人页面。

Android

iOS

使用步骤

要使用newcontact插件,首先需要在Dart代码中初始化并调用其方法。以下是一个完整的示例代码,展示了如何使用该插件来打开设备的联系人创建页面。

完整示例代码

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:newcontact/newcontact.dart'; // 导入newcontact插件

void main() {
  runApp(const MyApp()); // 运行应用
}

class MyApp extends StatefulWidget {
  const MyApp({super.key}); // 构造函数

  @override
  State<MyApp> createState() => _MyAppState(); // 创建状态类
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown'; // 平台版本变量
  final _newcontactPlugin = Newcontact(); // 初始化插件实例

  @override
  void initState() {
    super.initState();
    initPlatformState(); // 初始化平台状态
  }

  // 异步初始化方法
  Future<void> initPlatformState() async {
    String platformVersion;
    try {
      bool ret = await _newcontactPlugin.newContact(); // 调用插件方法打开联系人页面
      platformVersion = await _newcontactPlugin.getPlatformVersion() ?? 'Unknown platform version'; // 获取平台版本
    } on PlatformException {
      platformVersion = 'Failed to get platform version.'; // 异常处理
    }

    // 如果组件被移除,则不更新UI
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion; // 更新UI
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('newcontact插件示例'), // 应用标题
        ),
        body: Center(
          child: Text('运行环境: $_platformVersion\n'), // 显示运行环境信息
        ),
      ),
    );
  }
}

代码说明

  1. 导入插件

    import 'package:newcontact/newcontact.dart';
    

    导入newcontact插件以使用其功能。

  2. 初始化插件实例

    final _newcontactPlugin = Newcontact();
    

    创建插件实例用于调用其方法。

  3. 调用插件方法

    bool ret = await _newcontactPlugin.newContact();
    

    调用newContact()方法打开设备的联系人创建页面。

  4. 获取平台版本

    platformVersion = await _newcontactPlugin.getPlatformVersion() ?? 'Unknown platform version';
    

    获取当前平台的版本信息。

  5. 异常处理

    on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }
    

    捕获可能发生的异常并进行处理。

  6. 更新UI

    setState(() {
      _platformVersion = platformVersion;
    });
    

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

1 回复

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


在Flutter中,newcontact 插件可以帮助你轻松地管理设备上的联系人。它允许你添加、更新、删除和查询联系人。以下是如何使用 newcontact 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  newcontact: ^1.0.0  # 请检查最新版本

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

2. 请求权限

在 Android 和 iOS 上,访问联系人需要相应的权限。你需要在 AndroidManifest.xmlInfo.plist 文件中添加权限声明。

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.</string>

3. 使用插件

以下是一些常见的使用场景:

添加联系人

import 'package:newcontact/newcontact.dart';

void addContact() async {
  Contact contact = Contact(
    givenName: 'John',
    familyName: 'Doe',
    phones: [Item(label: 'mobile', value: '1234567890')],
    emails: [Item(label: 'work', value: 'john.doe@example.com')],
  );

  await NewContact.addContact(contact);
}

更新联系人

void updateContact(Contact contact) async {
  contact.givenName = 'Jane';
  await NewContact.updateContact(contact);
}

删除联系人

void deleteContact(Contact contact) async {
  await NewContact.deleteContact(contact);
}

查询联系人

void getContacts() async {
  List<Contact> contacts = await NewContact.getContacts();
  for (var contact in contacts) {
    print('Name: ${contact.givenName} ${contact.familyName}');
  }
}

4. 处理权限

在访问联系人之前,你需要确保应用已经获得了必要的权限。你可以使用 permission_handler 插件来请求权限。

import 'package:permission_handler/permission_handler.dart';

void requestPermissions() async {
  if (await Permission.contacts.request().isGranted) {
    // 权限已授予,可以访问联系人
  } else {
    // 权限被拒绝
  }
}

5. 完整示例

以下是一个完整的示例,展示了如何添加、查询和删除联系人:

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

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

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

class ContactManager extends StatefulWidget {
  [@override](/user/override)
  _ContactManagerState createState() => _ContactManagerState();
}

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

  [@override](/user/override)
  void initState() {
    super.initState();
    requestPermissions();
  }

  void requestPermissions() async {
    if (await Permission.contacts.request().isGranted) {
      getContacts();
    } else {
      // 处理权限被拒绝的情况
    }
  }

  void getContacts() async {
    List<Contact> contactList = await NewContact.getContacts();
    setState(() {
      contacts = contactList;
    });
  }

  void addContact() async {
    Contact contact = Contact(
      givenName: 'John',
      familyName: 'Doe',
      phones: [Item(label: 'mobile', value: '1234567890')],
      emails: [Item(label: 'work', value: 'john.doe@example.com')],
    );

    await NewContact.addContact(contact);
    getContacts();
  }

  void deleteContact(Contact contact) async {
    await NewContact.deleteContact(contact);
    getContacts();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Contact Manager'),
      ),
      body: ListView.builder(
        itemCount: contacts.length,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text('${contacts[index].givenName} ${contacts[index].familyName}'),
            subtitle: Text(contacts[index].phones?.first.value ?? ''),
            trailing: IconButton(
              icon: Icon(Icons.delete),
              onPressed: () => deleteContact(contacts[index]),
            ),
          );
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: addContact,
        child: Icon(Icons.add),
      ),
    );
  }
}
回到顶部