Flutter联系人管理插件contacts_androidx_example的使用
Flutter联系人管理插件contacts_androidx_example的使用
在本教程中,我们将展示如何使用Flutter的联系人管理插件contacts_androidx_example
来获取设备上的联系人信息。此插件基于contacts_service
插件,并支持Android平台。
环境准备
在开始之前,请确保您的开发环境已安装以下内容:
- Flutter SDK(版本1.20及以上)
- Android Studio(用于运行和调试Android应用)
- Android模拟器或真实设备
安装插件
在pubspec.yaml
文件中添加contacts_androidx_example
依赖项:
dependencies:
contacts_service: ^0.5.0
然后执行以下命令以更新依赖项:
flutter pub get
示例代码
以下是一个完整的示例代码,展示如何使用contacts_androidx_example
插件获取并显示联系人列表。
main.dart
import 'package:flutter/material.dart';
import 'package:contacts_service/contacts_service.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: ContactListPage(),
);
}
}
class ContactListPage extends StatefulWidget {
[@override](/user/override)
_ContactListPageState createState() => _ContactListPageState();
}
class _ContactListPageState extends State<ContactListPage> {
List<Contact> _contacts = [];
[@override](/user/override)
void initState() {
super.initState();
// 获取联系人列表
fetchContacts();
}
Future<void> fetchContacts() async {
List<Contact> contacts = (await ContactsService.getContacts()) ?? [];
setState(() {
_contacts = contacts;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('联系人列表'),
),
body: ListView.builder(
itemCount: _contacts.length,
itemBuilder: (context, index) {
Contact contact = _contacts[index];
return ListTile(
title: Text(contact.displayName ?? ''),
subtitle: contact.phones?.isNotEmpty == true
? Text(contact.phones!.first.value ?? '')
: null,
);
},
),
);
}
}
更多关于Flutter联系人管理插件contacts_androidx_example的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter联系人管理插件contacts_androidx_example的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
contacts_androidx_example
是一个用于在 Flutter 应用中管理 Android 设备上联系人的插件。它基于 AndroidX 库,提供了读取、写入和删除联系人等操作。以下是如何在 Flutter 项目中使用 contacts_androidx_example
插件的步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 contacts_androidx_example
插件的依赖。
dependencies:
flutter:
sdk: flutter
contacts_androidx_example: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 配置 Android 权限
为了访问联系人,你需要在 AndroidManifest.xml
文件中添加以下权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
3. 请求运行时权限
在 Android 6.0(API 23)及以上版本中,你需要在运行时请求权限。你可以使用 permission_handler
插件来请求权限。
首先,添加 permission_handler
依赖:
dependencies:
permission_handler: ^10.0.0 # 请使用最新版本
然后,在代码中请求权限:
import 'package:permission_handler/permission_handler.dart';
Future<void> requestPermissions() async {
var status = await Permission.contacts.status;
if (!status.isGranted) {
await Permission.contacts.request();
}
}
4. 使用 contacts_androidx_example
插件
以下是一些常见的操作示例:
读取联系人
import 'package:contacts_androidx_example/contacts_androidx_example.dart';
Future<void> readContacts() async {
List<Contact> contacts = await ContactsAndroidxExample.getContacts();
for (var contact in contacts) {
print('Name: ${contact.displayName}, Phone: ${contact.phones.first}');
}
}
添加联系人
import 'package:contacts_androidx_example/contacts_androidx_example.dart';
Future<void> addContact() async {
Contact newContact = Contact(
displayName: 'John Doe',
phones: [Phone(number: '1234567890')],
);
await ContactsAndroidxExample.addContact(newContact);
}
删除联系人
import 'package:contacts_androidx_example/contacts_androidx_example.dart';
Future<void> deleteContact(String contactId) async {
await ContactsAndroidxExample.deleteContact(contactId);
}
5. 完整示例
以下是一个完整的示例,展示了如何请求权限、读取联系人、添加联系人和删除联系人:
import 'package:flutter/material.dart';
import 'package:contacts_androidx_example/contacts_androidx_example.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: ContactsScreen(),
);
}
}
class ContactsScreen extends StatefulWidget {
[@override](/user/override)
_ContactsScreenState createState() => _ContactsScreenState();
}
class _ContactsScreenState extends State<ContactsScreen> {
List<Contact> contacts = [];
[@override](/user/override)
void initState() {
super.initState();
requestPermissions();
}
Future<void> requestPermissions() async {
var status = await Permission.contacts.status;
if (!status.isGranted) {
await Permission.contacts.request();
}
readContacts();
}
Future<void> readContacts() async {
List<Contact> contactList = await ContactsAndroidxExample.getContacts();
setState(() {
contacts = contactList;
});
}
Future<void> addContact() async {
Contact newContact = Contact(
displayName: 'John Doe',
phones: [Phone(number: '1234567890')],
);
await ContactsAndroidxExample.addContact(newContact);
readContacts();
}
Future<void> deleteContact(String contactId) async {
await ContactsAndroidxExample.deleteContact(contactId);
readContacts();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Contacts'),
),
body: ListView.builder(
itemCount: contacts.length,
itemBuilder: (context, index) {
var contact = contacts[index];
return ListTile(
title: Text(contact.displayName ?? 'No Name'),
subtitle: Text(contact.phones.isNotEmpty ? contact.phones.first.number : 'No Phone'),
trailing: IconButton(
icon: Icon(Icons.delete),
onPressed: () => deleteContact(contact.id),
),
);
},
),
floatingActionButton: FloatingActionButton(
onPressed: addContact,
child: Icon(Icons.add),
),
);
}
}