mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 08:38:18 +08:00
opt multi select
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user