opt: select (#937)

This commit is contained in:
My-Responsitories
2025-08-05 13:41:37 +08:00
committed by GitHub
parent afb09e8a0a
commit 01552801f2
20 changed files with 425 additions and 595 deletions

View File

@@ -1,16 +1,25 @@
import 'package:PiliPlus/http/fav.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/common/fav_order_type.dart';
import 'package:PiliPlus/models/common/video/source_type.dart';
import 'package:PiliPlus/models_new/fav/fav_detail/data.dart';
import 'package:PiliPlus/models_new/fav/fav_detail/media.dart';
import 'package:PiliPlus/pages/common/common_search_controller.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
import 'package:PiliPlus/pages/fav_detail/controller.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:get/get.dart';
class FavSearchController
extends CommonSearchController<FavDetailData, FavDetailItemModel> {
extends CommonSearchController<FavDetailData, FavDetailItemModel>
with
CommonMultiSelectMixin<FavDetailItemModel>,
DeleteItemMixin,
BaseFavController {
int type = Get.arguments['type'];
@override
int mediaId = Get.arguments['mediaId'];
@override
bool isOwner = Get.arguments['isOwner'];
dynamic count = Get.arguments['count'];
dynamic title = Get.arguments['title'];
@@ -36,17 +45,20 @@ class FavSearchController
return response.medias;
}
Future<void> onCancelFav(int index, int id, int? type) async {
var result = await FavHttp.favVideo(
resources: '$id:$type',
addIds: '',
delIds: mediaId.toString(),
);
if (result['status']) {
loadingState
..value.data!.removeAt(index)
..refresh();
SmartDialog.showToast('取消收藏');
}
}
@override
void onViewFav(FavDetailItemModel item, int? index) => PageUtils.toVideoPage(
bvid: item.bvid,
cid: item.ugc!.firstCid!,
cover: item.cover,
title: item.title,
extraArguments: {
'sourceType': SourceType.fav,
'mediaId': mediaId,
'oid': item.id,
'favTitle': title,
'count': count,
'desc': true,
'isContinuePlaying': true,
},
);
}