opt multi del

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-08-05 17:18:40 +08:00
parent 3caa684b2e
commit 104d295389
58 changed files with 379 additions and 404 deletions

View File

@@ -270,7 +270,7 @@ abstract class CommonIntroController extends GetxController {
Future<void> viewLater() async {
var res = await (hasLater.value
? UserHttp.toViewDel(aids: [IdUtils.bv2av(bvid)])
? UserHttp.toViewDel(aids: IdUtils.bv2av(bvid).toString())
: await UserHttp.toViewLater(bvid: bvid));
if (res['status']) hasLater.value = !hasLater.value;
SmartDialog.showToast(res['msg']);

View File

@@ -14,13 +14,9 @@ abstract class MultiSelectBase<T> {
void onSelect(T item, [bool disableSelect = true]);
void handleSelect([bool checked = false, bool disableSelect = true]);
void onConfirm();
void onRemove();
}
abstract class MultiSelectController<R, T extends MultiSelectData>
extends CommonListController<R, T>
with CommonMultiSelectMixin<T>, DeleteItemMixin {}
mixin CommonMultiSelectMixin<T extends MultiSelectData>
implements MultiSelectBase<T> {
@override
@@ -76,15 +72,16 @@ mixin CommonMultiSelectMixin<T extends MultiSelectData>
mixin DeleteItemMixin<R, T extends MultiSelectData>
on CommonListController<R, T>, CommonMultiSelectMixin<T> {
Future<void> afterDelete(Set<T> result) async {
// TODO: result require hash
final remainList = loadingState.value.data!;
if (result.length == 1) {
remainList.remove(result.single);
Future<void> afterDelete(Iterable<T> removeList) async {
final list = loadingState.value.data!;
if (removeList.length == list.length) {
list.clear();
} else if (removeList.length == 1) {
list.remove(removeList.single);
} else {
remainList.removeWhere(result.contains);
list.removeWhere(removeList.contains);
}
if (remainList.isNotEmpty) {
if (list.isNotEmpty) {
loadingState.refresh();
} else if (!isEnd) {
onReload();

View File

@@ -0,0 +1,6 @@
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:PiliPlus/pages/common/multi_select/base.dart';
abstract class MultiSelectController<R, T extends MultiSelectData>
extends CommonListController<R, T>
with CommonMultiSelectMixin<T>, DeleteItemMixin {}

View File

@@ -1,8 +1,8 @@
import 'package:PiliPlus/common/widgets/appbar/appbar.dart';
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/pages/common/common_search_controller.dart';
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
import 'package:PiliPlus/pages/common/search/common_search_controller.dart';
import 'package:PiliPlus/pages/common/multi_select/base.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

View File

@@ -1,4 +1,4 @@
import 'package:PiliPlus/pages/common/common_slide_page.dart';
import 'package:PiliPlus/pages/common/slide/common_slide_page.dart';
import 'package:flutter/material.dart';
abstract class CommonCollapseSlidePage extends CommonSlidePage {