mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 00:28: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> {
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user