Kaynağa Gözat

[fix]全部联系人,不完整删除时增加延迟

云天逵 11 ay önce
ebeveyn
işleme
d5be181f2a

+ 7 - 4
lib/module/contact/all/all_controller.dart

@@ -93,9 +93,12 @@ class AllController extends BaseController {
     for (var contact in contactToDelete) {
       contact.delete();
     }
-    LoadingDialog.hide();
-    ToastUtil.show("Successful");
-    exitEditMode();
-    ContactState.loadContacts();
+
+    Future.delayed(Duration(milliseconds: 300), () {
+      ToastUtil.show("Successful");
+      exitEditMode();
+      LoadingDialog.hide();
+      ContactState.loadContacts();
+    });
   }
 }

+ 23 - 16
lib/module/contact/duplicate/controller.dart

@@ -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;
   }
-}
+}

+ 12 - 7
lib/module/contact/incomplete/controller.dart

@@ -87,21 +87,26 @@ class ContactInCompleteController extends BaseController {
         .where((contact) => selectedContacts.contains(contact.id))
         .toList();
 
+
     LoadingDialog.show();
+
     for (var contact in contactToDelete) {
       await contact.delete(); // 删除操作必须 `await`
     }
 
-    ToastUtil.show("Successful");
+    Future.delayed(Duration(milliseconds: 300), ()async {
+      LoadingDialog.hide();
+      ToastUtil.show("Successful");
+
+      exitEditMode();
 
-    exitEditMode();
-    LoadingDialog.hide();
-    await ContactState.loadContacts(); // 确保联系人列表更新
+      await ContactState.loadContacts(); // 确保联系人列表更新
 
-    filterContacts(); // 重新筛选联系人
-    groupContacts(); // 重新分组
+      filterContacts(); // 重新筛选联系人
+      groupContacts(); // 重新分组
 
-    debugPrint("filteredContacts.length: ${filteredContacts.length}");
+      debugPrint("filteredContacts.length: ${filteredContacts.length}");
+    });
   }
 
   // 全选/取消全选