| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import 'package:clean/base/base_controller.dart';
- import 'package:clean/module/contact/contact_state.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';
- 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);
- var isScroll = true;
- itemPositionsListener.itemPositions.addListener(() {
- final positions = itemPositionsListener.itemPositions.value;
- for (var position in positions) {
- if (index == position.index) {
- isScroll = false;
- }
- print('Item ${position.index} is visible at position ${position.itemLeadingEdge}');
- }
- if (index != -1 && isScroll) {
- itemScrollController.scrollTo(
- index: index, duration: Duration(milliseconds: 300),
- // curve: Curves,
- );
- }
- });
- }
- // 选择/取消选择联系人
- 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() {
- // 获取要删除的资产
- final contactToDelete =
- ContactState.contactList.where((contact) => selectedContacts.contains(contact.id)).toList();
- for (var contact in contactToDelete) {
- contact.delete();
- }
- ToastUtil.show("Successful");
- exitEditMode();
- ContactState.loadContacts();
- }
- }
|