all_controller.dart 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import 'package:clean/base/base_controller.dart';
  2. import 'package:clean/module/contact/contact_state.dart';
  3. import 'package:flutter/Material.dart';
  4. import 'package:flutter_contacts/contact.dart';
  5. import 'package:get/get.dart';
  6. import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
  7. class AllController extends BaseController {
  8. // 是否为编辑状态
  9. RxBool isEdit = false.obs;
  10. // 是否全选
  11. RxBool isAllSelected = false.obs;
  12. // 存储选中的图片ID
  13. final RxSet<String> selectedContacts = <String>{}.obs;
  14. final ItemScrollController itemScrollController = ItemScrollController();
  15. final ItemPositionsListener itemPositionsListener = ItemPositionsListener.create();
  16. @override
  17. void onInit() {
  18. // TODO: implement onInit
  19. super.onInit();
  20. }
  21. void scrollToInitial(String initial) {
  22. int index = ContactState.initials.indexOf(initial);
  23. if (index != -1) {
  24. itemScrollController.jumpTo(
  25. index: index,
  26. // curve: Curves,
  27. );
  28. }
  29. }
  30. // 选择/取消选择联系人
  31. void toggleSelectContact(Contact selectContact) {
  32. final asset = ContactState.contactList.firstWhere((contact) => contact.id == selectContact.id);
  33. if (selectedContacts.contains(selectContact.id)) {
  34. selectedContacts.remove(selectContact.id);
  35. } else {
  36. selectedContacts.add(selectContact.id);
  37. }
  38. // 更新全选状态
  39. isAllSelected.value = ContactState.selectedContact.length == ContactState.contactList.length;
  40. }
  41. // 全选/取消全选
  42. void toggleSelectAll() {
  43. if (isAllSelected.value) {
  44. selectedContacts.clear();
  45. } else {
  46. selectedContacts.addAll(ContactState.contactList.map((contact) => contact.id));
  47. }
  48. isAllSelected.value = !isAllSelected.value;
  49. }
  50. // 退出编辑模式时清空选择
  51. void exitEditMode() {
  52. isEdit.value = false;
  53. selectedContacts.clear();
  54. isAllSelected.value = false;
  55. }
  56. void deleteBtnClick() {
  57. // 获取要删除的资产
  58. final contactToDelete =
  59. ContactState.contactList.where((contact) => selectedContacts.contains(contact.id)).toList();
  60. for (var contact in contactToDelete) {
  61. contact.delete();
  62. }
  63. exitEditMode();
  64. ContactState.loadContacts();
  65. }
  66. }