diff --git a/lib/common/widgets/list_sheet.dart b/lib/common/widgets/list_sheet.dart index 690acd93..40ddc1e3 100644 --- a/lib/common/widgets/list_sheet.dart +++ b/lib/common/widgets/list_sheet.dart @@ -114,7 +114,10 @@ class _ListSheetContentState extends State { } SmartDialog.showToast('切换到:$title'); widget.onClose(); - if (episode.runtimeType.toString() == "EpisodeItem") { + if (episode is bangumi.EpisodeItem && episode.cover != null) { + widget.changeFucCall( + episode.bvid, episode.cid, episode.aid, episode.cover); + } else if (episode.runtimeType.toString() == "EpisodeItem") { widget.changeFucCall(episode.bvid, episode.cid, episode.aid); } else { widget.changeFucCall(widget.bvid!, episode.cid, widget.aid!); diff --git a/lib/pages/bangumi/introduction/controller.dart b/lib/pages/bangumi/introduction/controller.dart index aff730ae..30cf7a02 100644 --- a/lib/pages/bangumi/introduction/controller.dart +++ b/lib/pages/bangumi/introduction/controller.dart @@ -238,27 +238,44 @@ class BangumiIntroController extends CommonController { builder: (context) { String videoUrl = '${HttpString.baseUrl}/video/$bvid'; return AlertDialog( - title: const Text('请选择'), - actions: [ - TextButton( - onPressed: () { + clipBehavior: Clip.hardEdge, + contentPadding: const EdgeInsets.symmetric(vertical: 12), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile( + title: const Text( + '复制链接', + style: TextStyle(fontSize: 14), + ), + onTap: () { + Get.back(); Clipboard.setData(ClipboardData(text: videoUrl)); SmartDialog.showToast('已复制'); }, - child: const Text('复制链接到剪贴板')), - TextButton( - onPressed: () { + ), + ListTile( + title: const Text( + '其它app打开', + style: TextStyle(fontSize: 14), + ), + onTap: () { + Get.back(); launchUrl(Uri.parse(videoUrl)); }, - child: const Text('其它app打开')), - TextButton( - onPressed: () async { - var result = - await Share.share(videoUrl).whenComplete(() {}); - return result; + ), + ListTile( + title: const Text( + '分享视频', + style: TextStyle(fontSize: 14), + ), + onTap: () { + Get.back(); + Share.share(videoUrl).whenComplete(() {}); }, - child: const Text('分享视频')), - ], + ), + ], + ), ); }); } @@ -280,7 +297,7 @@ class BangumiIntroController extends CommonController { } // 修改分P或番剧分集 - Future changeSeasonOrbangu(bvid, cid, aid) async { + Future changeSeasonOrbangu(bvid, cid, aid, cover) async { // 重新获取视频资源 VideoDetailController videoDetailCtr = Get.find(tag: Get.arguments['heroTag']); @@ -288,6 +305,9 @@ class BangumiIntroController extends CommonController { videoDetailCtr.cid.value = cid; videoDetailCtr.danmakuCid.value = cid; videoDetailCtr.queryVideoUrl(); + if (cover is String && cover.isNotEmpty) { + videoDetailCtr.videoItem['pic'] = cover; + } // 重新请求评论 try { /// 未渲染回复组件时可能异常 @@ -342,7 +362,8 @@ class BangumiIntroController extends CommonController { int cid = episodes[prevIndex].cid!; String bvid = episodes[prevIndex].bvid!; int aid = episodes[prevIndex].aid!; - changeSeasonOrbangu(bvid, cid, aid); + dynamic cover = episodes[prevIndex].cover; + changeSeasonOrbangu(bvid, cid, aid, cover); return true; } @@ -376,7 +397,8 @@ class BangumiIntroController extends CommonController { int cid = episodes[nextIndex].cid!; String bvid = episodes[nextIndex].bvid!; int aid = episodes[nextIndex].aid!; - changeSeasonOrbangu(bvid, cid, aid); + dynamic cover = episodes[nextIndex].cover; + changeSeasonOrbangu(bvid, cid, aid, cover); return true; } diff --git a/lib/pages/bangumi/widgets/bangumi_panel.dart b/lib/pages/bangumi/widgets/bangumi_panel.dart index d322c1e0..45e6273a 100644 --- a/lib/pages/bangumi/widgets/bangumi_panel.dart +++ b/lib/pages/bangumi/widgets/bangumi_panel.dart @@ -161,6 +161,7 @@ class _BangumiPanelState extends State { widget.pages[i].bvid, widget.pages[i].cid, widget.pages[i].aid, + widget.pages[i].cover, ); // currentIndex = i; // setState(() {}); diff --git a/lib/pages/video/detail/introduction/controller.dart b/lib/pages/video/detail/introduction/controller.dart index 70df1c74..953f099d 100644 --- a/lib/pages/video/detail/introduction/controller.dart +++ b/lib/pages/video/detail/introduction/controller.dart @@ -379,9 +379,9 @@ class VideoIntroController extends GetxController { style: TextStyle(fontSize: 14), ), onTap: () { + Get.back(); Clipboard.setData(ClipboardData(text: videoUrl)); SmartDialog.showToast('已复制'); - Get.back(); }, ), ListTile( @@ -390,8 +390,8 @@ class VideoIntroController extends GetxController { style: TextStyle(fontSize: 14), ), onTap: () { - launchUrl(Uri.parse(videoUrl)); Get.back(); + launchUrl(Uri.parse(videoUrl)); }, ), ListTile( @@ -399,11 +399,11 @@ class VideoIntroController extends GetxController { '分享视频', style: TextStyle(fontSize: 14), ), - onTap: () async { - await Share.share('${videoDetail.value.title} ' + onTap: () { + Get.back(); + Share.share('${videoDetail.value.title} ' 'UP主: ${videoDetail.value.owner!.name!}' ' - $videoUrl'); - Get.back(); }, ), ],