Flutter联系人选择插件contactor_picker的使用
Flutter联系人选择插件contactor_picker的使用
联系人选择器 contactor_picker
是一个用于在 Flutter 应用程序中轻松选择联系人的插件。通过此插件,用户可以方便地从联系人列表中选择联系人,甚至可以通过搜索功能快速找到特定联系人。
安装
首先,在项目的 pubspec.yaml
文件中添加 contactor_picker
依赖项:
dependencies:
contactor_picker: ^0.0.6
然后,从命令行安装依赖项:
$ flutter packages get
使用方法
列表加搜索
ContactorPicker.showPicker(
context,
/// 数据源
dataList: [],
/// 是否展示code,默认不展示
showGroupCode: true,
/// 选中数据
onSelectedData: (data) {
// 回调函数,当用户选择某个联系人时执行
},
/// 标题
title: '联系人',
/// 页面背景色
backgroundColor: Color(0xFFFAFAFA),
/// 当前字母颜色
letterSelectedColor: Colors.blueAccent,
);
仅搜索
ContactorPicker.showSearchPicker(
context,
/// 是否展示code,默认不展示
showGroupCode: true,
/// 数据源
dataList: [],
/// 背景色
backgroundColor: Color(0xFFFAFAFA),
/// 选中数据
onSelectedData: (data) {
// 回调函数,当用户选择某个联系人时执行
},
);
支持嵌入其他Widget
以下是一个完整的示例代码,展示了如何将 ContactorView
嵌入到 Flutter 应用程序中,并实现联系人选择功能:
import 'package:flutter/material.dart';
import 'package:contactor_picker/contactor_picker.dart';
import 'package:lpinyin/lpinyin.dart';
void main() {
runApp(MaterialApp(home: MyApp()));
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _currentData = '';
[@override](/user/override)
void initState() {
super.initState();
print('length----${DataUtil.dataList.length}');
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextButton(
onPressed: () {
ContactorPicker.showPicker(
context,
showGroupCode: true,
dataList: DataUtil.dataList.map((element) {
String pinyin = PinyinHelper.getPinyinE(element['name'],
separator: "",
defPinyin: '#',
format: PinyinFormat.WITHOUT_TONE);
return ContactorDataListData(
name: element['name'],
id: int.tryParse(element['zip']),
pinyin: pinyin,
// headerImageUrl: 'https://picsum.photos/250?image=9',
code: element['label'],
groupCode: element['zip'],
);
}).toList(),
title: '地址簿',
extendWidget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
alignment: Alignment.centerLeft,
height: 40,
child: Text('666666'),
),
Container(
height: 40,
alignment: Alignment.centerLeft,
child: Text('555555'),
),
Expanded(
child: Container(
height: 40,
alignment: Alignment.centerLeft,
child: Text('888888'),
),
)
],
),
letterSelectedColor: Colors.blueAccent,
onSelectedData: (data, pageNum) {
print(data.toJson());
_currentData = data.toJson().toString();
setState(() {});
},
);
},
child: Text('地址簿'),
),
TextButton(
onPressed: () {
ContactorPicker.showSearchPicker(
context,
showGroupCode: true,
dataList: DataUtil.dataList.map((element) {
String pinyin = PinyinHelper.getPinyinE(element['name'],
separator: " ",
defPinyin: '#',
format: PinyinFormat.WITHOUT_TONE);
return ContactorDataListData(
name: element['name'],
id: int.tryParse(element['zip']),
pinyin: pinyin,
code: element['label'],
groupCode: element['zip'],
);
}).toList(),
backgroundColor: Color(0xFFFAFAFA),
onSelectedData: (data, pageNum) {
print(data.toJson());
_currentData = data.toJson().toString();
setState(() {});
},
);
},
child: Text('搜索'),
),
Container(
padding: EdgeInsets.symmetric(horizontal: 30),
child: Text('currentData: $_currentData\n'),
),
],
),
),
);
}
}
更多关于Flutter联系人选择插件contactor_picker的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter联系人选择插件contactor_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用contactor_picker
插件来选择联系人的示例代码。请注意,contactor_picker
可能不是一个真实存在的Flutter插件名称,我假设你指的是一个类似的联系人选择插件。在真实项目中,你应该查找并确认一个真实可用的插件名称,例如contacts_service
,这是Flutter社区中常用的一个联系人选择插件。
以下是如何使用contacts_service
插件来选择联系人的示例代码:
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加contacts_service
插件的依赖:
dependencies:
flutter:
sdk: flutter
contacts_service: ^x.y.z # 替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 请求权限
在Android上,你需要在AndroidManifest.xml
中请求必要的权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
...
</manifest>
在iOS上,你需要在Info.plist
中添加相应的权限描述:
<key>NSContactsUsageDescription</key>
<string>This app needs access to your contacts to function properly.</string>
<key>NSContactsUsageDescription_when_in_use</key>
<string>This app needs access to your contacts when in use.</string>
3. 编写Flutter代码
在你的Flutter项目中,你可以使用以下代码来选择联系人:
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: ContactPickerScreen(),
);
}
}
class ContactPickerScreen extends StatefulWidget {
@override
_ContactPickerScreenState createState() => _ContactPickerScreenState();
}
class _ContactPickerScreenState extends State<ContactPickerScreen> {
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) {
_pickContacts();
} else if (result.isDenied) {
// 权限被拒绝
} else if (result.isPermanentlyDenied) {
// 权限被永久拒绝,引导用户到设置中开启权限
openAppSettings();
}
} else {
_pickContacts();
}
}
Future<void> _pickContacts() async {
try {
List<Contact> result = await ContactsService.getContacts(
withThumbnails: false,
);
setState(() {
contacts = result;
});
} catch (e) {
print("Error fetching contacts: $e");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Contact Picker Example'),
),
body: contacts.isEmpty
? Center(child: Text('No contacts selected'))
: ListView.builder(
itemCount: contacts.length,
itemBuilder: (context, index) {
Contact contact = contacts[index];
return ListTile(
title: Text(contact.displayName),
subtitle: Text(contact.phones.firstOrNull?.value ?? 'No phone'),
);
}),
floatingActionButton: FloatingActionButton(
onPressed: _pickContacts,
tooltip: 'Pick Contacts',
child: Icon(Icons.contact_phone),
),
);
}
}
4. 运行应用
确保你已经正确配置了所有必要的权限和依赖,然后运行你的Flutter应用。你应该能够看到一个按钮,点击它会请求联系人权限,并显示选中的联系人。
请注意,以上代码使用了permission_handler
插件来处理权限请求。如果你不需要处理权限请求逻辑,可以省略相关代码,但确保你的应用有适当的权限来处理联系人数据。