From e9945ab63ccf0c2e8167f287815723292ed96f25 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Sun, 29 Dec 2024 10:31:13 +0800 Subject: [PATCH] mod: image save dialog Signed-off-by: bggRGjQaUbCoE --- lib/common/widgets/image_save.dart | 91 +++++++++++++++++++ lib/common/widgets/video_card_h.dart | 34 +++++-- lib/common/widgets/video_card_h_grpc.dart | 11 ++- .../widgets/video_card_h_member_video.dart | 11 ++- lib/common/widgets/video_card_v.dart | 11 ++- .../widgets/video_card_v_member_home.dart | 11 ++- lib/pages/bangumi/widgets/bangumi_card_v.dart | 4 - .../widgets/bangumi_card_v_member_home.dart | 4 - lib/pages/common/popup_controller.dart | 11 --- lib/pages/hot/controller.dart | 4 +- lib/pages/hot/view.dart | 17 ---- lib/pages/later/view.dart | 2 +- lib/pages/live/controller.dart | 4 +- lib/pages/live/widgets/live_item.dart | 11 ++- lib/pages/rank/zone/controller.dart | 4 +- lib/pages/rank/zone/view.dart | 16 ---- lib/pages/rcmd/controller.dart | 4 +- lib/pages/rcmd/view.dart | 28 +----- .../video/detail/related/controller.dart | 4 +- lib/pages/video/detail/related/view.dart | 17 ---- lib/utils/download.dart | 2 + 21 files changed, 160 insertions(+), 141 deletions(-) create mode 100644 lib/common/widgets/image_save.dart delete mode 100644 lib/pages/common/popup_controller.dart diff --git a/lib/common/widgets/image_save.dart b/lib/common/widgets/image_save.dart new file mode 100644 index 00000000..41ca00a7 --- /dev/null +++ b/lib/common/widgets/image_save.dart @@ -0,0 +1,91 @@ +import 'package:PiliPalaX/common/constants.dart'; +import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; +import 'package:PiliPalaX/utils/download.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; + +void imageSaveDialog({ + required BuildContext context, + required String? title, + required String? cover, +}) { + final double imgWidth = + MediaQuery.sizeOf(context).width - StyleString.safeSpace * 2; + SmartDialog.show( + animationType: SmartAnimationType.centerScale_otherSlide, + builder: (context) => Container( + margin: const EdgeInsets.symmetric(horizontal: StyleString.safeSpace), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surface, + borderRadius: BorderRadius.circular(10.0), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Stack( + children: [ + NetworkImgLayer( + width: imgWidth, + height: imgWidth / StyleString.aspectRatio, + src: cover, + quality: 100, + ), + Positioned( + right: 8, + top: 8, + child: Container( + width: 30, + height: 30, + decoration: BoxDecoration( + color: Colors.black.withOpacity(0.3), + borderRadius: + const BorderRadius.all(Radius.circular(20))), + child: IconButton( + style: ButtonStyle( + padding: WidgetStateProperty.all(EdgeInsets.zero), + ), + onPressed: SmartDialog.dismiss, + icon: const Icon( + Icons.close, + size: 18, + color: Colors.white, + ), + ), + ), + ), + ], + ), + Padding( + padding: const EdgeInsets.fromLTRB(12, 10, 8, 10), + child: Row( + children: [ + Expanded( + child: SelectableText( + title ?? '', + style: Theme.of(context).textTheme.titleSmall, + ), + ), + const SizedBox(width: 4), + IconButton( + tooltip: '保存封面图', + onPressed: () async { + bool saveStatus = await DownloadUtils.downloadImg( + context, + [cover ?? ''], + ); + // 保存成功,自动关闭弹窗 + if (saveStatus) { + SmartDialog.dismiss(); + } + }, + icon: const Icon(Icons.download, size: 20), + ) + ], + ), + ), + ], + ), + ), + ); +} diff --git a/lib/common/widgets/video_card_h.dart b/lib/common/widgets/video_card_h.dart index 69066a1d..c7159541 100644 --- a/lib/common/widgets/video_card_h.dart +++ b/lib/common/widgets/video_card_h.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/image_save.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -16,24 +17,22 @@ class VideoCardH extends StatelessWidget { const VideoCardH({ super.key, required this.videoItem, - this.longPress, - this.longPressEnd, this.source = 'normal', this.showOwner = true, this.showView = true, this.showDanmaku = true, this.showPubdate = false, this.onTap, + this.onLongPress, }); final dynamic videoItem; - final Function()? longPress; - final Function()? longPressEnd; final String source; final bool showOwner; final bool showView; final bool showDanmaku; final bool showPubdate; - final GestureTapCallback? onTap; + final VoidCallback? onTap; + final VoidCallback? onLongPress; @override Widget build(BuildContext context) { @@ -56,7 +55,23 @@ class VideoCardH extends StatelessWidget { label: item.title.isEmpty ? 'label' : item.title): item.onTap!, }, child: InkWell( - onLongPress: longPress, + onLongPress: () { + if (onLongPress != null) { + onLongPress!(); + } else { + imageSaveDialog( + context: context, + title: videoItem.title is String + ? videoItem.title + : videoItem.title is List + ? (videoItem.title as List) + .map((item) => item['text']) + .join() + : '', + cover: videoItem.pic, + ); + } + }, onTap: () async { if (onTap != null) { onTap?.call(); @@ -154,7 +169,7 @@ class VideoCardH extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (videoItem.title is String) ...[ + if (videoItem.title is String) Expanded( child: Text( videoItem.title as String, @@ -167,8 +182,8 @@ class VideoCardH extends StatelessWidget { maxLines: 2, overflow: TextOverflow.ellipsis, ), - ), - ] else ...[ + ) + else Expanded( child: RichText( overflow: TextOverflow.ellipsis, @@ -194,7 +209,6 @@ class VideoCardH extends StatelessWidget { ), ), ), - ], // const Spacer(), // if (videoItem.rcmdReason != null && // videoItem.rcmdReason.content != '') diff --git a/lib/common/widgets/video_card_h_grpc.dart b/lib/common/widgets/video_card_h_grpc.dart index c2e36895..5f252d8d 100644 --- a/lib/common/widgets/video_card_h_grpc.dart +++ b/lib/common/widgets/video_card_h_grpc.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/image_save.dart'; import 'package:PiliPalaX/grpc/app/card/v1/card.pb.dart' as card; import 'package:PiliPalaX/utils/app_scheme.dart'; import 'package:flutter/material.dart'; @@ -12,8 +13,6 @@ class VideoCardHGrpc extends StatelessWidget { const VideoCardHGrpc({ super.key, required this.videoItem, - this.longPress, - this.longPressEnd, this.source = 'normal', this.showOwner = true, this.showView = true, @@ -21,8 +20,6 @@ class VideoCardHGrpc extends StatelessWidget { this.showPubdate = false, }); final card.Card videoItem; - final Function()? longPress; - final Function()? longPressEnd; final String source; final bool showOwner; final bool showView; @@ -50,7 +47,11 @@ class VideoCardHGrpc extends StatelessWidget { // }, child: InkWell( borderRadius: BorderRadius.circular(12), - onLongPress: longPress, + onLongPress: () => imageSaveDialog( + context: context, + title: videoItem.smallCoverV5.base.title, + cover: videoItem.smallCoverV5.base.cover, + ), onTap: () async { if (type == 'ketang') { SmartDialog.showToast('课堂视频暂不支持播放'); diff --git a/lib/common/widgets/video_card_h_member_video.dart b/lib/common/widgets/video_card_h_member_video.dart index ad6bd2f8..b89bfe0a 100644 --- a/lib/common/widgets/video_card_h_member_video.dart +++ b/lib/common/widgets/video_card_h_member_video.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/image_save.dart'; import 'package:PiliPalaX/common/widgets/stat/danmu.dart'; import 'package:PiliPalaX/common/widgets/stat/view.dart'; import 'package:PiliPalaX/common/widgets/video_popup_menu.dart'; @@ -15,14 +16,10 @@ class VideoCardHMemberVideo extends StatelessWidget { const VideoCardHMemberVideo({ super.key, required this.videoItem, - this.longPress, - this.longPressEnd, this.onTap, this.bvid, }); final Item videoItem; - final Function()? longPress; - final Function()? longPressEnd; final VoidCallback? onTap; final dynamic bvid; @@ -34,7 +31,11 @@ class VideoCardHMemberVideo extends StatelessWidget { return Stack( children: [ InkWell( - onLongPress: longPress, + onLongPress: () => imageSaveDialog( + context: context, + title: videoItem.title, + cover: videoItem.cover, + ), onTap: () async { if (onTap != null) { onTap!(); diff --git a/lib/common/widgets/video_card_v.dart b/lib/common/widgets/video_card_v.dart index e544fe77..2415b2fc 100644 --- a/lib/common/widgets/video_card_v.dart +++ b/lib/common/widgets/video_card_v.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/image_save.dart'; import 'package:PiliPalaX/http/search.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; @@ -18,14 +19,10 @@ import 'video_popup_menu.dart'; // 视频卡片 - 垂直布局 class VideoCardV extends StatelessWidget { final dynamic videoItem; - final Function()? longPress; - final Function()? longPressEnd; const VideoCardV({ super.key, required this.videoItem, - this.longPress, - this.longPressEnd, }); bool isStringNumeric(String str) { @@ -163,7 +160,11 @@ class VideoCardV extends StatelessWidget { margin: EdgeInsets.zero, child: InkWell( onTap: () async => onPushDetail(heroTag), - onLongPress: longPress, + onLongPress: () => imageSaveDialog( + context: context, + title: videoItem.title, + cover: videoItem.pic, + ), child: Column( children: [ AspectRatio( diff --git a/lib/common/widgets/video_card_v_member_home.dart b/lib/common/widgets/video_card_v_member_home.dart index d9b98480..8ca3f1f5 100644 --- a/lib/common/widgets/video_card_v_member_home.dart +++ b/lib/common/widgets/video_card_v_member_home.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/image_save.dart'; import 'package:PiliPalaX/models/space/item.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -10,14 +11,10 @@ import 'network_img_layer.dart'; // 视频卡片 - 垂直布局 class VideoCardVMemberHome extends StatelessWidget { final Item videoItem; - final Function()? longPress; - final Function()? longPressEnd; const VideoCardVMemberHome({ super.key, required this.videoItem, - this.longPress, - this.longPressEnd, }); void onPushDetail(heroTag) async { @@ -147,7 +144,11 @@ class VideoCardVMemberHome extends StatelessWidget { margin: EdgeInsets.zero, child: InkWell( onTap: () async => onPushDetail(heroTag), - onLongPress: longPress, + onLongPress: () => imageSaveDialog( + context: context, + title: videoItem.title, + cover: videoItem.cover, + ), child: Column( children: [ AspectRatio( diff --git a/lib/pages/bangumi/widgets/bangumi_card_v.dart b/lib/pages/bangumi/widgets/bangumi_card_v.dart index 6850b2cd..45273844 100644 --- a/lib/pages/bangumi/widgets/bangumi_card_v.dart +++ b/lib/pages/bangumi/widgets/bangumi_card_v.dart @@ -9,13 +9,9 @@ class BangumiCardV extends StatelessWidget { const BangumiCardV({ super.key, required this.bangumiItem, - this.longPress, - this.longPressEnd, }); final dynamic bangumiItem; - final Function()? longPress; - final Function()? longPressEnd; @override Widget build(BuildContext context) { diff --git a/lib/pages/bangumi/widgets/bangumi_card_v_member_home.dart b/lib/pages/bangumi/widgets/bangumi_card_v_member_home.dart index 4efe6a44..3d9e0b18 100644 --- a/lib/pages/bangumi/widgets/bangumi_card_v_member_home.dart +++ b/lib/pages/bangumi/widgets/bangumi_card_v_member_home.dart @@ -9,13 +9,9 @@ class BangumiCardVMemberHome extends StatelessWidget { const BangumiCardVMemberHome({ super.key, required this.bangumiItem, - this.longPress, - this.longPressEnd, }); final Item bangumiItem; - final Function()? longPress; - final Function()? longPressEnd; @override Widget build(BuildContext context) { diff --git a/lib/pages/common/popup_controller.dart b/lib/pages/common/popup_controller.dart deleted file mode 100644 index 1aa75cda..00000000 --- a/lib/pages/common/popup_controller.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:PiliPalaX/pages/common/common_controller.dart'; -import 'package:flutter/material.dart'; - -abstract class PopupController extends CommonController { - List popupDialog = []; - - void removePopupDialog() { - popupDialog.last?.remove(); - popupDialog.removeLast(); - } -} diff --git a/lib/pages/hot/controller.dart b/lib/pages/hot/controller.dart index 4118d3dd..33b89bf6 100644 --- a/lib/pages/hot/controller.dart +++ b/lib/pages/hot/controller.dart @@ -1,8 +1,8 @@ import 'package:PiliPalaX/http/loading_state.dart'; -import 'package:PiliPalaX/pages/common/popup_controller.dart'; +import 'package:PiliPalaX/pages/common/common_controller.dart'; import 'package:PiliPalaX/http/video.dart'; -class HotController extends PopupController { +class HotController extends CommonController { // int idx = 0; @override diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index ad1d2fef..e4f11d57 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -7,7 +7,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/common/constants.dart'; -import 'package:PiliPalaX/common/widgets/animated_dialog.dart'; import 'package:PiliPalaX/common/skeleton/video_card_h.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/pages/home/index.dart'; @@ -82,15 +81,6 @@ class _HotPageState extends State with AutomaticKeepAliveClientMixin { ); } - OverlayEntry _createPopupDialog(videoItem) { - return OverlayEntry( - builder: (context) => AnimatedDialog( - closeFn: _hotController.removePopupDialog, - videoItem: videoItem, - ), - ); - } - Widget _buildSkeleton() { return SliverGrid( gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( @@ -125,13 +115,6 @@ class _HotPageState extends State with AutomaticKeepAliveClientMixin { return VideoCardH( videoItem: loadingState.response[index], showPubdate: true, - longPress: () { - _hotController.popupDialog.add( - _createPopupDialog(loadingState.response[index])); - Overlay.of(context) - .insert(_hotController.popupDialog.last!); - }, - longPressEnd: _hotController.removePopupDialog, ); }, childCount: loadingState.response.length, diff --git a/lib/pages/later/view.dart b/lib/pages/later/view.dart index c132f696..ab5d0cc4 100644 --- a/lib/pages/later/view.dart +++ b/lib/pages/later/view.dart @@ -158,7 +158,7 @@ class _LaterPageState extends State { : () { _laterController.onSelect(index); }, - longPress: () { + onLongPress: () { if (_laterController.enableMultiSelect.value.not) { _laterController.enableMultiSelect.value = true; _laterController.onSelect(index); diff --git a/lib/pages/live/controller.dart b/lib/pages/live/controller.dart index 5da03be0..a9f08422 100644 --- a/lib/pages/live/controller.dart +++ b/lib/pages/live/controller.dart @@ -1,8 +1,8 @@ import 'package:PiliPalaX/http/loading_state.dart'; -import 'package:PiliPalaX/pages/common/popup_controller.dart'; import 'package:PiliPalaX/http/live.dart'; +import 'package:PiliPalaX/pages/common/common_controller.dart'; -class LiveController extends PopupController { +class LiveController extends CommonController { @override void onInit() { super.onInit(); diff --git a/lib/pages/live/widgets/live_item.dart b/lib/pages/live/widgets/live_item.dart index 5dd1cb79..c8a3a987 100644 --- a/lib/pages/live/widgets/live_item.dart +++ b/lib/pages/live/widgets/live_item.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/image_save.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/common/constants.dart'; @@ -8,14 +9,10 @@ import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; // 视频卡片 - 垂直布局 class LiveCardV extends StatelessWidget { final LiveItemModel liveItem; - final Function()? longPress; - final Function()? longPressEnd; const LiveCardV({ super.key, required this.liveItem, - this.longPress, - this.longPressEnd, }); @override @@ -29,7 +26,11 @@ class LiveCardV extends StatelessWidget { Get.toNamed('/liveRoom?roomid=${liveItem.roomId}', arguments: {'liveItem': liveItem, 'heroTag': heroTag}); }, - onLongPress: longPress, + onLongPress: () => imageSaveDialog( + context: context, + title: liveItem.title, + cover: liveItem.cover, + ), child: Column( children: [ ClipRRect( diff --git a/lib/pages/rank/zone/controller.dart b/lib/pages/rank/zone/controller.dart index 19489f5e..a16ed823 100644 --- a/lib/pages/rank/zone/controller.dart +++ b/lib/pages/rank/zone/controller.dart @@ -1,8 +1,8 @@ import 'package:PiliPalaX/http/loading_state.dart'; -import 'package:PiliPalaX/pages/common/popup_controller.dart'; import 'package:PiliPalaX/http/video.dart'; +import 'package:PiliPalaX/pages/common/common_controller.dart'; -class ZoneController extends PopupController { +class ZoneController extends CommonController { ZoneController({required this.zoneID}); int zoneID; diff --git a/lib/pages/rank/zone/view.dart b/lib/pages/rank/zone/view.dart index 27faebc5..b8d31d69 100644 --- a/lib/pages/rank/zone/view.dart +++ b/lib/pages/rank/zone/view.dart @@ -6,7 +6,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/common/constants.dart'; -import 'package:PiliPalaX/common/widgets/animated_dialog.dart'; import 'package:PiliPalaX/common/skeleton/video_card_h.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/common/widgets/video_card_h.dart'; @@ -98,15 +97,6 @@ class _ZonePageState extends State ); } - OverlayEntry _createPopupDialog(videoItem) { - return OverlayEntry( - builder: (context) => AnimatedDialog( - closeFn: _zoneController.removePopupDialog, - videoItem: videoItem, - ), - ); - } - Widget _buildSkeleton() { return SliverGrid( gridDelegate: SliverGridDelegateWithExtentAndRatio( @@ -135,12 +125,6 @@ class _ZonePageState extends State return VideoCardH( videoItem: loadingState.response[index], showPubdate: true, - longPress: () { - _zoneController.popupDialog - .add(_createPopupDialog(loadingState.response[index])); - Overlay.of(context).insert(_zoneController.popupDialog.last!); - }, - longPressEnd: _zoneController.removePopupDialog, ); }, childCount: loadingState.response.length, diff --git a/lib/pages/rcmd/controller.dart b/lib/pages/rcmd/controller.dart index 973837c7..ecb43ffa 100644 --- a/lib/pages/rcmd/controller.dart +++ b/lib/pages/rcmd/controller.dart @@ -1,9 +1,9 @@ import 'package:PiliPalaX/http/loading_state.dart'; -import 'package:PiliPalaX/pages/common/popup_controller.dart'; import 'package:PiliPalaX/http/video.dart'; +import 'package:PiliPalaX/pages/common/common_controller.dart'; import 'package:PiliPalaX/utils/storage.dart'; -class RcmdController extends PopupController { +class RcmdController extends CommonController { late bool enableSaveLastData; late String defaultRcmdType = 'app'; diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index 2aa28540..078a42ea 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -3,7 +3,7 @@ import 'dart:async'; import 'package:PiliPalaX/common/widgets/refresh_indicator.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/models/common/tab_type.dart'; -import 'package:PiliPalaX/pages/common/popup_controller.dart'; +import 'package:PiliPalaX/pages/common/common_controller.dart'; import 'package:PiliPalaX/pages/live/controller.dart'; import 'package:PiliPalaX/pages/live/widgets/live_item.dart'; import 'package:flutter/material.dart'; @@ -11,7 +11,6 @@ import 'package:flutter/rendering.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/common/constants.dart'; import 'package:PiliPalaX/common/skeleton/video_card_v.dart'; -import 'package:PiliPalaX/common/widgets/animated_dialog.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/common/widgets/video_card_v.dart'; import 'package:PiliPalaX/pages/home/index.dart'; @@ -31,7 +30,7 @@ class RcmdPage extends StatefulWidget { class _RcmdPageState extends State with AutomaticKeepAliveClientMixin { - late final PopupController _controller = widget.tabType == TabType.rcmd + late final CommonController _controller = widget.tabType == TabType.rcmd ? Get.put(RcmdController()) : Get.put(LiveController()); @@ -104,15 +103,6 @@ class _RcmdPageState extends State ); } - OverlayEntry _createPopupDialog(videoItem) { - return OverlayEntry( - builder: (context) => AnimatedDialog( - closeFn: _controller.removePopupDialog, - videoItem: videoItem, - ), - ); - } - Widget contentGrid(LoadingState loadingState) { return SliverGrid( gridDelegate: SliverGridDelegateWithExtentAndRatio( @@ -135,23 +125,9 @@ class _RcmdPageState extends State ? widget.tabType == TabType.rcmd ? VideoCardV( videoItem: loadingState.response[index], - longPress: () { - _controller.popupDialog.add( - _createPopupDialog(loadingState.response[index])); - Overlay.of(context) - .insert(_controller.popupDialog.last!); - }, - longPressEnd: _controller.removePopupDialog, ) : LiveCardV( liveItem: loadingState.response[index], - longPress: () { - _controller.popupDialog.add( - _createPopupDialog(loadingState.response[index])); - Overlay.of(context) - .insert(_controller.popupDialog.last!); - }, - longPressEnd: _controller.removePopupDialog, ) : const VideoCardVSkeleton(); }, diff --git a/lib/pages/video/detail/related/controller.dart b/lib/pages/video/detail/related/controller.dart index 0e8dde0c..c2b65575 100644 --- a/lib/pages/video/detail/related/controller.dart +++ b/lib/pages/video/detail/related/controller.dart @@ -1,9 +1,9 @@ import 'package:PiliPalaX/http/loading_state.dart'; -import 'package:PiliPalaX/pages/common/popup_controller.dart'; +import 'package:PiliPalaX/pages/common/common_controller.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/http/video.dart'; -class RelatedController extends PopupController { +class RelatedController extends CommonController { // 视频aid String bvid = Get.parameters['bvid'] ?? ""; diff --git a/lib/pages/video/detail/related/view.dart b/lib/pages/video/detail/related/view.dart index d3665c91..f738ac3f 100644 --- a/lib/pages/video/detail/related/view.dart +++ b/lib/pages/video/detail/related/view.dart @@ -2,7 +2,6 @@ import 'package:PiliPalaX/http/loading_state.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/common/skeleton/video_card_h.dart'; -import 'package:PiliPalaX/common/widgets/animated_dialog.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/common/widgets/video_card_h.dart'; import '../../../../common/constants.dart'; @@ -33,15 +32,6 @@ class _RelatedVideoPanelState extends State ); } - OverlayEntry _createPopupDialog(videoItem) { - return OverlayEntry( - builder: (BuildContext context) => AnimatedDialog( - closeFn: _relatedController.removePopupDialog, - videoItem: videoItem, - ), - ); - } - Widget _buildBody(LoadingState loadingState) { return switch (loadingState) { Loading() => SliverGrid( @@ -74,13 +64,6 @@ class _RelatedVideoPanelState extends State child: VideoCardH( videoItem: loadingState.response[index], showPubdate: true, - longPress: () { - _relatedController.popupDialog.add( - _createPopupDialog(loadingState.response[index])); - Overlay.of(context) - .insert(_relatedController.popupDialog.last!); - }, - longPressEnd: _relatedController.removePopupDialog, ), ); } diff --git a/lib/utils/download.dart b/lib/utils/download.dart index c1b4c218..636ae3bf 100644 --- a/lib/utils/download.dart +++ b/lib/utils/download.dart @@ -134,9 +134,11 @@ class DownloadUtils { break; } } + return true; } catch (err) { SmartDialog.dismiss(); SmartDialog.showToast(err.toString()); + return false; } } }