mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-24 01:58:36 +00:00
opt: select (#937)
This commit is contained in:
committed by
GitHub
parent
afb09e8a0a
commit
01552801f2
@@ -1,14 +1,17 @@
|
||||
import 'package:PiliPlus/common/widgets/dialog/dialog.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/http/user.dart';
|
||||
import 'package:PiliPlus/models_new/later/data.dart';
|
||||
import 'package:PiliPlus/models_new/later/list.dart';
|
||||
import 'package:PiliPlus/pages/common/common_search_controller.dart';
|
||||
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class LaterSearchController
|
||||
extends CommonSearchController<LaterData, LaterItemModel> {
|
||||
extends CommonSearchController<LaterData, LaterItemModel>
|
||||
with CommonMultiSelectMixin<LaterItemModel>, DeleteItemMixin {
|
||||
dynamic mid = Get.arguments['mid'];
|
||||
dynamic count = Get.arguments['count'];
|
||||
|
||||
@@ -32,24 +35,24 @@ class LaterSearchController
|
||||
SmartDialog.showToast(res['msg']);
|
||||
}
|
||||
|
||||
// @override
|
||||
// void onConfirm() {
|
||||
// showConfirmDialog(
|
||||
// context: Get.context!,
|
||||
// content: '确认删除所选稍后再看吗?',
|
||||
// title: '提示',
|
||||
// onConfirm: () async {
|
||||
// final result = allChecked.toSet();
|
||||
// SmartDialog.showLoading(msg: '请求中');
|
||||
// var res = await UserHttp.toViewDel(
|
||||
// aids: result.map((item) => item.aid!),
|
||||
// );
|
||||
// if (res['status']) {
|
||||
// afterDelete(result);
|
||||
// }
|
||||
// SmartDialog.dismiss();
|
||||
// SmartDialog.showToast(res['msg']);
|
||||
// },
|
||||
// );
|
||||
// }
|
||||
@override
|
||||
void onConfirm() {
|
||||
showConfirmDialog(
|
||||
context: Get.context!,
|
||||
content: '确认删除所选稍后再看吗?',
|
||||
title: '提示',
|
||||
onConfirm: () async {
|
||||
final result = allChecked.toSet();
|
||||
SmartDialog.showLoading(msg: '请求中');
|
||||
var res = await UserHttp.toViewDel(
|
||||
aids: result.map((item) => item.aid!),
|
||||
);
|
||||
if (res['status']) {
|
||||
afterDelete(result);
|
||||
}
|
||||
SmartDialog.dismiss();
|
||||
SmartDialog.showToast(res['msg']);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import 'package:PiliPlus/common/widgets/button/icon_button.dart';
|
||||
import 'package:PiliPlus/common/widgets/dialog/dialog.dart';
|
||||
import 'package:PiliPlus/models/common/video/source_type.dart';
|
||||
import 'package:PiliPlus/models_new/later/data.dart';
|
||||
import 'package:PiliPlus/models_new/later/list.dart';
|
||||
@@ -27,90 +25,52 @@ class _LaterSearchPageState
|
||||
tag: Utils.generateRandomString(8),
|
||||
);
|
||||
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// // TODO: refa
|
||||
// return Obx(() {
|
||||
// final parent = super.build(context) as Scaffold;
|
||||
// final enableMultiSelect = controller.enableMultiSelect.value;
|
||||
// return PopScope(
|
||||
// canPop: !enableMultiSelect,
|
||||
// onPopInvokedWithResult: (didPop, result) {
|
||||
// if (enableMultiSelect) {
|
||||
// controller.handleSelect();
|
||||
// }
|
||||
// },
|
||||
// child: Scaffold(
|
||||
// resizeToAvoidBottomInset: parent.resizeToAvoidBottomInset,
|
||||
// appBar: MultiSelectAppBarWidget(
|
||||
// ctr: controller,
|
||||
// child: parent.appBar as AppBar,
|
||||
// ),
|
||||
// body: parent.body,
|
||||
// ),
|
||||
// );
|
||||
// });
|
||||
// }
|
||||
|
||||
@override
|
||||
Widget buildList(List<LaterItemModel> list) {
|
||||
return SliverGrid(
|
||||
gridDelegate: Grid.videoCardHDelegate(context, minHeight: 110),
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
childCount: list.length,
|
||||
(context, index) {
|
||||
if (index == list.length - 1) {
|
||||
controller.onLoadMore();
|
||||
}
|
||||
final item = list[index];
|
||||
return Stack(
|
||||
clipBehavior: Clip.none,
|
||||
children: [
|
||||
VideoCardHLater(
|
||||
videoItem: item,
|
||||
onViewLater: (cid) {
|
||||
PageUtils.toVideoPage(
|
||||
bvid: item.bvid,
|
||||
cid: cid,
|
||||
cover: item.pic,
|
||||
title: item.title,
|
||||
extraArguments: {
|
||||
'oid': item.aid,
|
||||
'sourceType': SourceType.watchLater,
|
||||
'count': controller.count,
|
||||
'favTitle': '稍后再看',
|
||||
'mediaId': controller.mid,
|
||||
'desc': false,
|
||||
'isContinuePlaying': index != 0,
|
||||
},
|
||||
);
|
||||
delegate: SliverChildBuilderDelegate(childCount: list.length, (
|
||||
context,
|
||||
index,
|
||||
) {
|
||||
if (index == list.length - 1) {
|
||||
controller.onLoadMore();
|
||||
}
|
||||
final item = list[index];
|
||||
final enableMultiSelect = controller.enableMultiSelect.value;
|
||||
return VideoCardHLater(
|
||||
videoItem: item,
|
||||
onViewLater: (cid) {
|
||||
PageUtils.toVideoPage(
|
||||
bvid: item.bvid,
|
||||
cid: cid,
|
||||
cover: item.pic,
|
||||
title: item.title,
|
||||
extraArguments: {
|
||||
'oid': item.aid,
|
||||
'sourceType': SourceType.watchLater,
|
||||
'count': controller.count,
|
||||
'favTitle': '稍后再看',
|
||||
'mediaId': controller.mid,
|
||||
'desc': false,
|
||||
'isContinuePlaying': index != 0,
|
||||
},
|
||||
);
|
||||
},
|
||||
onRemove: () => controller.toViewDel(
|
||||
context,
|
||||
index,
|
||||
item.aid!,
|
||||
),
|
||||
onTap: !enableMultiSelect ? null : () => controller.onSelect(item),
|
||||
onLongPress: enableMultiSelect
|
||||
? null
|
||||
: () {
|
||||
controller.enableMultiSelect.value = true;
|
||||
controller.onSelect(item);
|
||||
},
|
||||
),
|
||||
Positioned(
|
||||
right: 12,
|
||||
bottom: 0,
|
||||
child: iconButton(
|
||||
tooltip: '移除',
|
||||
context: context,
|
||||
onPressed: () => showConfirmDialog(
|
||||
context: context,
|
||||
title: '提示',
|
||||
content: '即将移除该视频,确定是否移除',
|
||||
onConfirm: () => controller.toViewDel(
|
||||
context,
|
||||
index,
|
||||
item.aid!,
|
||||
),
|
||||
),
|
||||
icon: Icons.clear,
|
||||
iconColor: Theme.of(context).colorScheme.onSurfaceVariant,
|
||||
bgColor: Colors.transparent,
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user