opt multi select

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-11-28 11:50:28 +08:00
parent 21a2373a5c
commit 0f8da1999a
4 changed files with 13 additions and 9 deletions

View File

@@ -8,7 +8,6 @@ mixin MultiSelectData {
mixin MultiSelectBase<T extends MultiSelectData> { mixin MultiSelectBase<T extends MultiSelectData> {
RxBool get enableMultiSelect; RxBool get enableMultiSelect;
RxBool get allSelected;
int get checkedCount; int get checkedCount;
@@ -19,9 +18,6 @@ mixin MultiSelectBase<T extends MultiSelectData> {
mixin BaseMultiSelectMixin<T extends MultiSelectData> mixin BaseMultiSelectMixin<T extends MultiSelectData>
implements MultiSelectBase<T> { implements MultiSelectBase<T> {
@override
late final allSelected = false.obs;
late final RxInt rxCount = 0.obs; late final RxInt rxCount = 0.obs;
@override @override
int get checkedCount => rxCount.value; int get checkedCount => rxCount.value;
@@ -57,8 +53,6 @@ mixin BaseMultiSelectMixin<T extends MultiSelectData>
state.refresh(); state.refresh();
if (checkedCount == 0) { if (checkedCount == 0) {
enableMultiSelect.value = false; enableMultiSelect.value = false;
} else {
allSelected.value = checkedCount == list.length;
} }
} }
} }
@@ -67,8 +61,7 @@ mixin CommonMultiSelectMixin<T extends MultiSelectData>
implements MultiSelectBase<T> { implements MultiSelectBase<T> {
@override @override
late final RxBool enableMultiSelect = false.obs; late final RxBool enableMultiSelect = false.obs;
@override RxBool? get allSelected => null;
late final allSelected = false.obs;
Rx<LoadingState<List<T>?>> get loadingState; Rx<LoadingState<List<T>?>> get loadingState;
late final RxInt rxCount = 0.obs; late final RxInt rxCount = 0.obs;
@@ -92,7 +85,7 @@ mixin CommonMultiSelectMixin<T extends MultiSelectData>
if (checkedCount == 0) { if (checkedCount == 0) {
enableMultiSelect.value = false; enableMultiSelect.value = false;
} else { } else {
allSelected.value = checkedCount == list.length; allSelected?.value = checkedCount == list.length;
} }
} }

View File

@@ -1,4 +1,5 @@
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart'; import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart';
import 'package:PiliPlus/pages/common/search/common_search_page.dart'; import 'package:PiliPlus/pages/common/search/common_search_page.dart';
import 'package:PiliPlus/pages/download/detail/widgets/item.dart'; import 'package:PiliPlus/pages/download/detail/widgets/item.dart';
@@ -38,6 +39,9 @@ class _DownloadSearchPageState
IconButton( IconButton(
tooltip: '多选', tooltip: '多选',
onPressed: () { onPressed: () {
if (controller.loadingState.value is! Success) {
return;
}
if (controller.enableMultiSelect.value) { if (controller.enableMultiSelect.value) {
controller.handleSelect(); controller.handleSelect();
} else { } else {

View File

@@ -3,6 +3,7 @@ import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models_new/fav/fav_note/list.dart'; import 'package:PiliPlus/models_new/fav/fav_note/list.dart';
import 'package:PiliPlus/pages/common/multi_select/multi_select_controller.dart'; import 'package:PiliPlus/pages/common/multi_select/multi_select_controller.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
class FavNoteController class FavNoteController
extends MultiSelectController<List<FavNoteItemModel>?, FavNoteItemModel> { extends MultiSelectController<List<FavNoteItemModel>?, FavNoteItemModel> {
@@ -16,6 +17,9 @@ class FavNoteController
queryData(); queryData();
} }
@override
final RxBool allSelected = false.obs;
@override @override
void handleSelect({bool checked = false, bool disableSelect = true}) { void handleSelect({bool checked = false, bool disableSelect = true}) {
allSelected.value = checked; allSelected.value = checked;

View File

@@ -23,6 +23,9 @@ class FavPgcController
queryData(); queryData();
} }
@override
final RxBool allSelected = false.obs;
@override @override
void handleSelect({bool checked = false, bool disableSelect = true}) { void handleSelect({bool checked = false, bool disableSelect = true}) {
allSelected.value = checked; allSelected.value = checked;