![](/img/trans.png)
[英]Not able to add contact using contacts_service in flutter app
[英]Contact update not working in flutter [contacts_service]
我在我的 flutter 應用程序中使用contact_service插件來管理用戶的聯系人數據。
我在使用這個插件時遇到了 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 個不同人的手機號碼。
嘗試使用:
await for (var element in contactData) {
final contact = Contact(
phones: [Item(value: <mobileNo>)],
givenName: <name>,
company: <companyName>,
);
ContactsService.addContact(contact);
}
我認為您忘記了完成代碼的一些主要步驟:
否則嘗試使用此插件代替flutter_contact 。
根據我的理解, contact_service
您按照文檔中提到的iOS
和Android
權限正確初始化。 所以我相信你聯系正確。仍然驗證一次。
對於contact 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");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.