联系人更新在颤振中不工作[contacts_service]



我使用contact_service插件来管理我的flutter应用程序中用户的联系数据。

我得到2个主要问题,而使用这个插件

1。当我更新旧联系人时,没有错误出现,但手机号码从旧联系人中删除,有时它被删除。

我的代码是这样的

Contact? duplicateContact = <old contact>;
duplicateContact.givenName = <new name>;
duplicateContact.company = <company name>;
duplicateContact.phones = [Item(value: mobile, label: "mobile")];
await ContactsService.updateContact(contact);

所以如果这个过程是循环的,因为我想更新多个联系人,但联系人没有得到更新,而不是手机号码字段将被更新为空或整个联系人将被删除。

所以我不知道联系人更新出了什么问题,我发现了很多事情,但没有任何工作

2。我正在尝试使用循环一次保存多个联系人,因此我在循环中添加联系人保存代码,如下所述

for (var element in contactData) {
final contact = Contact(
phones: [Item(value: <mobileNo>)],
givenName: <name>,
company: <companyName>,
);
await ContactsService.addContact(contact);
}

在这里,我遇到了一个非常奇怪的问题,在这个循环中,我试图添加大约50个人的联系人,但是一个人的手机号码与另一个人的联系人组合在一起。有时,一个联系人中会保存3到4个不同的人的手机号码。

我想你已经忘记了完成代码的一些主要步骤:

  1. 确保您遵循插件页面的步骤,如权限。
  2. 看一个例子可能会帮助你从问题或插件页面也许你忘记初始化一些功能。

否则尝试使用此插件代替flutter_contact。

根据我对contact_service的理解,您正确地初始化了iOS&Android权限如文档中所述。所以我相信你的接触是正确的。还是验证一次

Forcontact update你必须添加identifier根据文档。你还需要使用future循环async任务。

试试下面的代码(在iOS中测试):

import 'package:contacts_service/contacts_service.dart';

// UPDATE / EDIT CONTACT
static Future updateContact() async { 
try {
List<Contact> contactData = await ContactsService.getContacts();
Contact editContact = Contact(
givenName: "Petter",
company: "Petter",
phones: [Item(value: "+91 0000000000", label: "mobile")]);

Future.forEach(contactData, (Contact contact) async { // Handle Async loop
if (editContact.givenName == contact.givenName) {
editContact.identifier = contact.identifier; // MUST ADD IDENTIFIER

await ContactsService.updateContact(editContact); // UPDATE CONTACT
// await ContactsService.deleteContact(editContact); // DELETE CONTACT
}
});
} catch (ex) {
"update contact error: $ex".printLog();
}
} 
// ADD MULTIPLE CONTACTS
Future addContact() async {
List<Contact> contactData = [
Contact(
givenName: "Jackson",
company: "Jackson",
phones: [Item(value: "+91 1112223330", label: "mobile")]),
Contact(
givenName: "Jack",
company: "Jack",
phones: [Item(value: "+91 4445556660", label: "mobile")]),
Contact(
givenName: "Joseph",
company: "Joseph",
phones: [Item(value: "+91 7778889990", label: "mobile")]),
Contact(
givenName: "John",
company: "John",
phones: [Item(value: "+91 1234567890", label: "mobile")]),
Contact(
givenName: "Jayden",
company: "Jayden",
phones: [Item(value: "+91 0987654321", label: "mobile")]),
Contact(
givenName: "Petter",
company: "Petter",
phones: [Item(value: "+91 1212121212", label: "mobile")]),
];
try {
Future.forEach(contactData, (Contact contact) async { // Handle Async loop
await ContactsService.addContact(contact);
});
} catch (ex) {
debugPrint("add contact error: $ex");
}
}

最新更新