| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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<String> selectedContacts = <String>{}.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();
- }
- }
|