|
|
@@ -7,15 +7,17 @@ import 'package:flutter_contacts/contact.dart';
|
|
|
import 'package:flutter_contacts/flutter_contacts.dart';
|
|
|
import 'package:get/get_rx/src/rx_types/rx_types.dart';
|
|
|
|
|
|
-class ContactDuplicateController extends BaseController {
|
|
|
+import '../../../dialog/loading_dialog.dart';
|
|
|
|
|
|
+class ContactDuplicateController extends BaseController {
|
|
|
// 是否为编辑状态
|
|
|
RxBool isEdit = false.obs;
|
|
|
|
|
|
// 是否全选
|
|
|
RxBool isAllSelected = false.obs;
|
|
|
|
|
|
- RxMap<String, List<Contact>> contactsByPhoneNumber = <String, List<Contact>>{}.obs;
|
|
|
+ RxMap<String, List<Contact>> contactsByPhoneNumber =
|
|
|
+ <String, List<Contact>>{}.obs;
|
|
|
|
|
|
var contactCount = 0;
|
|
|
|
|
|
@@ -33,7 +35,6 @@ class ContactDuplicateController extends BaseController {
|
|
|
}
|
|
|
|
|
|
Future<void> loadDuplicateContacts() async {
|
|
|
-
|
|
|
Map<String, List<Contact>> groupedContacts = {};
|
|
|
|
|
|
// 获取所有联系人
|
|
|
@@ -43,7 +44,8 @@ class ContactDuplicateController extends BaseController {
|
|
|
);
|
|
|
|
|
|
// 按名字的首字母排序
|
|
|
- contacts.sort((a, b) => (a.displayName ?? '').compareTo(b.displayName ?? ''));
|
|
|
+ contacts
|
|
|
+ .sort((a, b) => (a.displayName ?? '').compareTo(b.displayName ?? ''));
|
|
|
|
|
|
for (var contact in contacts) {
|
|
|
if (contact.phones.isNotEmpty) {
|
|
|
@@ -78,7 +80,6 @@ class ContactDuplicateController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 选择/取消选择联系人
|
|
|
void toggleSelectContact(String phoneNumber) {
|
|
|
// final asset = ContactState.contactList.firstWhere((contact) => contact.id == selectContact.id);
|
|
|
@@ -126,7 +127,7 @@ class ContactDuplicateController extends BaseController {
|
|
|
StorePage.start();
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+ LoadingDialog.show();
|
|
|
Contact? contactWithMostInfo;
|
|
|
int maxInfoCount = 0;
|
|
|
|
|
|
@@ -144,23 +145,29 @@ class ContactDuplicateController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- ToastUtil.show("Successful");
|
|
|
- exitEditMode();
|
|
|
- await loadDuplicateContacts();
|
|
|
+ Future.delayed(Duration(milliseconds: 300), () async {
|
|
|
+ LoadingDialog.hide();
|
|
|
+ ToastUtil.show("Successful");
|
|
|
+ exitEditMode();
|
|
|
+ await loadDuplicateContacts();
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
void deleteBtnClick() {
|
|
|
// 获取要删除的资产
|
|
|
- final contactToDelete =
|
|
|
- ContactState.contactList.where((contact) => selectedContacts.contains(contact.id)).toList();
|
|
|
+ final contactToDelete = ContactState.contactList
|
|
|
+ .where((contact) => selectedContacts.contains(contact.id))
|
|
|
+ .toList();
|
|
|
|
|
|
+ LoadingDialog.show();
|
|
|
for (var contact in contactToDelete) {
|
|
|
contact.delete();
|
|
|
}
|
|
|
-
|
|
|
- ToastUtil.show("Successful");
|
|
|
- exitEditMode();
|
|
|
- ContactState.loadContacts();
|
|
|
+ Future.delayed(Duration(milliseconds: 300), () {
|
|
|
+ ToastUtil.show("Successful");
|
|
|
+ exitEditMode();
|
|
|
+ ContactState.loadContacts();
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
// 统计联系人的信息数量
|
|
|
@@ -216,4 +223,4 @@ class ContactDuplicateController extends BaseController {
|
|
|
|
|
|
return count;
|
|
|
}
|
|
|
-}
|
|
|
+}
|