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> {
RxBool get enableMultiSelect;
RxBool get allSelected;
int get checkedCount;
@@ -19,9 +18,6 @@ mixin MultiSelectBase<T extends MultiSelectData> {
mixin BaseMultiSelectMixin<T extends MultiSelectData>
implements MultiSelectBase<T> {
@override
late final allSelected = false.obs;
late final RxInt rxCount = 0.obs;
@override
int get checkedCount => rxCount.value;
@@ -57,8 +53,6 @@ mixin BaseMultiSelectMixin<T extends MultiSelectData>
state.refresh();
if (checkedCount == 0) {
enableMultiSelect.value = false;
} else {
allSelected.value = checkedCount == list.length;
}
}
}
@@ -67,8 +61,7 @@ mixin CommonMultiSelectMixin<T extends MultiSelectData>
implements MultiSelectBase<T> {
@override
late final RxBool enableMultiSelect = false.obs;
@override
late final allSelected = false.obs;
RxBool? get allSelected => null;
Rx<LoadingState<List<T>?>> get loadingState;
late final RxInt rxCount = 0.obs;
@@ -92,7 +85,7 @@ mixin CommonMultiSelectMixin<T extends MultiSelectData>
if (checkedCount == 0) {
enableMultiSelect.value = false;
} 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/http/loading_state.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/download/detail/widgets/item.dart';
@@ -38,6 +39,9 @@ class _DownloadSearchPageState
IconButton(
tooltip: '多选',
onPressed: () {
if (controller.loadingState.value is! Success) {
return;
}
if (controller.enableMultiSelect.value) {
controller.handleSelect();
} 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/pages/common/multi_select/multi_select_controller.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
class FavNoteController
extends MultiSelectController<List<FavNoteItemModel>?, FavNoteItemModel> {
@@ -16,6 +17,9 @@ class FavNoteController
queryData();
}
@override
final RxBool allSelected = false.obs;
@override
void handleSelect({bool checked = false, bool disableSelect = true}) {
allSelected.value = checked;

View File

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