import 'package:clean/base/base_controller.dart'; import 'package:clean/data/consts/event_report_id.dart'; import 'package:clean/data/repositories/user_repository.dart'; import 'package:clean/handler/event_handler.dart'; import 'package:clean/module/contact/contact_state.dart'; import 'package:clean/module/store/store_view.dart'; import 'package:clean/utils/toast_util.dart'; import 'package:flutter/Material.dart'; import 'package:flutter_contacts/contact.dart'; import 'package:get/get.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import '../../../dialog/loading_dialog.dart'; class AllController extends BaseController { // 是否为编辑状态 RxBool isEdit = false.obs; // 是否全选 RxBool isAllSelected = false.obs; // 存储选中的图片ID final RxSet selectedContacts = {}.obs; final ItemScrollController itemScrollController = ItemScrollController(); final ItemPositionsListener itemPositionsListener = ItemPositionsListener.create(); @override void onInit() { // TODO: implement onInit super.onInit(); } void scrollToInitial(String initial) { int index = ContactState.initials.indexOf(initial); if (index != -1) { final positions = itemPositionsListener.itemPositions.value; final isVisible = positions.any((position) => position.index == index); if (!isVisible) { itemScrollController.scrollTo( index: index, duration: Duration(milliseconds: 300), ); } } } // 选择/取消选择联系人 void toggleSelectContact(Contact selectContact) { // final asset = ContactState.contactList.firstWhere((contact) => contact.id == selectContact.id); if (selectedContacts.contains(selectContact.id)) { selectedContacts.remove(selectContact.id); } else { selectedContacts.add(selectContact.id); } // 更新全选状态 isAllSelected.value = ContactState.selectedContact.length == ContactState.contactList.length; } // 全选/取消全选 void toggleSelectAll() { if (isAllSelected.value) { selectedContacts.clear(); } else { selectedContacts.addAll(ContactState.contactList.map((contact) => contact.id)); } isAllSelected.value = !isAllSelected.value; } // 退出编辑模式时清空选择 void exitEditMode() { isEdit.value = false; selectedContacts.clear(); isAllSelected.value = false; } void deleteBtnClick() async{ EventHandler.report(EventId.event_08003); if (!userRepository.isVip()) { StorePage.start(); return; } if (selectedContacts.isEmpty) { ToastUtil.show("Please select a contact"); return; } LoadingDialog.show(displayTime: 100); // 获取要删除的资产 final contactToDelete = ContactState.contactList.where((contact) => selectedContacts.contains(contact.id)).toList(); for (var contact in contactToDelete) { await contact.delete(); } ToastUtil.show("Successful"); exitEditMode(); LoadingDialog.hide(); ContactState.loadContacts(); } }