opt: share/save video cover

Closes #563

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-03-29 20:38:36 +08:00
parent 6539457f83
commit db1c836a3e
6 changed files with 116 additions and 43 deletions

View File

@@ -9,6 +9,7 @@ import 'package:PiliPlus/models/common/super_resolution_type.dart';
import 'package:PiliPlus/pages/bangumi/introduction/controller.dart';
import 'package:PiliPlus/pages/setting/widgets/switch_item.dart';
import 'package:PiliPlus/pages/video/detail/introduction/widgets/action_item.dart';
import 'package:PiliPlus/utils/download.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/id_utils.dart';
import 'package:PiliPlus/utils/utils.dart';
@@ -163,6 +164,19 @@ class HeaderControlState extends State<HeaderControl> {
leading: const Icon(Icons.note_alt_outlined, size: 20),
title: const Text('查看笔记', style: titleStyle),
),
if (widget.videoDetailCtr.videoItem['pic'] != null)
ListTile(
dense: true,
onTap: () {
Get.back();
DownloadUtils.downloadImg(
context,
[widget.videoDetailCtr.videoItem['pic']],
);
},
leading: const Icon(Icons.image_outlined, size: 20),
title: const Text('保存封面', style: titleStyle),
),
ListTile(
dense: true,
onTap: () => {Get.back(), scheduleExit()},
@@ -1118,13 +1132,19 @@ class HeaderControlState extends State<HeaderControl> {
SmartDialog.showToast('已保存');
}
} catch (e) {
Share.shareXFiles([
XFile.fromData(
res.data,
name: name,
mimeType: 'application/json',
)
]);
Share.shareXFiles(
[
XFile.fromData(
res.data,
name: name,
mimeType: 'application/json',
),
],
sharePositionOrigin: await Utils.isIpad()
? Rect.fromLTWH(
0, 0, Get.width, Get.height / 2)
: null,
);
}
}
} catch (e) {