如何从 Flutter 的联系人中选择单个联系人

watbbzwu  于 2023-04-13  发布在  Flutter
关注(0)|答案(4)|浏览(268)

我一直在这个问题上卡住了。如何选择和获取详细信息从联系人在Flutter?请帮助。

rt4zxlrg

rt4zxlrg1#

添加此依赖项

这是目前的版本

contact_picker:联系我们

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

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

class MyApp extends StatefulWidget {
 @override
_MyAppState createState() => new _MyAppState();
}

 class _MyAppState extends State<MyApp> {
  final ContactPicker _contactPicker = new ContactPicker();
  Contact _contact;

  @override
  Widget build(BuildContext context) {
   return new MaterialApp(
   home: new Scaffold(
    appBar: new AppBar(
       title: new Text('Plugin example app'),
     ),
      body: new Center(
      child: new Column(
        mainAxisSize: MainAxisSize.min,
         children: <Widget>[
          new MaterialButton(
            color: Colors.blue,
            child: new Text("CLICK ME"),
            onPressed: () async {
              Contact contact = await _contactPicker.selectContact();
              setState(() {
                _contact = contact;
              });
            },
          ),
          new Text(
            _contact == null ? 'No contact selected.' : _contact.toString(),
          ),
        ],
      ),
    ),
  ),
);
 }
}
xn1cxnb4

xn1cxnb42#

contacts_service:^0.2.5,你可以通过添加查询来搜索这个,但我没有通过电话或电子邮件找到,如果你有任何想法。
https://pub.dev/packages/contacts_service#-readme-tab-

Iterable<Contact> johns = await ContactsService.getContacts(query : "john");
z9ju0rcb

z9ju0rcb3#

fluttercontactpicker软件包是打开本机电话簿的最佳软件包。它是 null safe,并自行计算联系人权限。您可以根据需要选择pickPhoneContactpickEmailContact

final PhoneContact contact =
await FlutterContactPicker.pickPhoneContact();

如果你想获取整个联系人,那么你可以使用pickFullContact()方法。

final FullContact contact =
await FlutterContactPicker.pickFullContact();
  • 注意 *:此方法仅适用于Android,不适用于iOS。因此,如果您使用此方法,可能需要添加平台检查。
ergxz8rk

ergxz8rk4#

您可以使用contact_picker包管理联系人。
将以下内容添加到pubscpec.yaml

contact_picker: ^0.0.2

您可以使用类似的方法打开联系人选取器并返回电话号码:

Future<String> pickMobileNumber() async {
  final contact = await ContactsService.openDeviceContactPicker();
  if (contact == null) {
    return null;
  }
  // Picks the first num with label mobile
  final mobilePhone = contact.phones.firstWhere(
    (phone) => phone.label?.toLowerCase() == 'mobile',
    orElse: () => null,
  );
  if (mobilePhone == null) {
    return null;
  }
  return mobilePhone.value;
}

相关问题