diff --git a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart index e1efd67a5..d0cf678ab 100644 --- a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart +++ b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:PiliPalaX/utils/download.dart'; +import 'package:PiliPalaX/utils/extension.dart'; import 'package:PiliPalaX/utils/storage.dart'; import 'package:PiliPalaX/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; @@ -44,7 +45,7 @@ class InteractiveviewerGallery extends StatefulWidget { }); /// The sources to show. - final List sources; + final List sources; /// The index of the first source in [sources] to show. final int initIndex; @@ -210,8 +211,8 @@ class _InteractiveviewerGalleryState extends State } String _getActualUrl(int index) => _thumbList[index] && _quality != 100 - ? '${widget.sources[index]}@${_quality}q.webp' - : widget.sources[index]; + ? '${widget.sources[index]}@${_quality}q.webp'.http2https + : widget.sources[index].http2https; @override Widget build(BuildContext context) { diff --git a/lib/common/widgets/overlay_pop.dart b/lib/common/widgets/overlay_pop.dart index e972cdc95..aee1f32a9 100644 --- a/lib/common/widgets/overlay_pop.dart +++ b/lib/common/widgets/overlay_pop.dart @@ -1,7 +1,6 @@ import 'dart:math'; import 'package:PiliPalaX/grpc/app/card/v1/card.pb.dart' as card; -import 'package:PiliPalaX/utils/extension.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../utils/download.dart'; @@ -83,14 +82,8 @@ class OverlayPop extends StatelessWidget { context, [ videoItem is card.Card - ? (videoItem as card.Card) - .smallCoverV5 - .base - .cover - .http2https - : (videoItem.pic != null - ? (videoItem.pic as String).http2https - : (videoItem.cover as String).http2https) + ? (videoItem as card.Card).smallCoverV5.base.cover + : videoItem.pic ?? videoItem.cover ], ); closeFn?.call(); diff --git a/lib/pages/fav_detail/widget/fav_video_card.dart b/lib/pages/fav_detail/widget/fav_video_card.dart index 67c600e40..d9364796c 100644 --- a/lib/pages/fav_detail/widget/fav_video_card.dart +++ b/lib/pages/fav_detail/widget/fav_video_card.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/image_save.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:flutter/material.dart'; @@ -72,7 +73,17 @@ class FavVideoCardH extends StatelessWidget { epId != null ? SearchType.media_bangumi : SearchType.video, }); }, - onLongPress: onLongPress, + onLongPress: () { + if (onLongPress != null) { + onLongPress!(); + } else { + imageSaveDialog( + context: context, + title: videoItem.title, + cover: videoItem.pic, + ); + } + }, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/fav_search/view.dart b/lib/pages/fav_search/view.dart index fa9ba14a9..8450369e1 100644 --- a/lib/pages/fav_search/view.dart +++ b/lib/pages/fav_search/view.dart @@ -84,12 +84,14 @@ class _FavSearchPageState extends State { return FavVideoCardH( videoItem: loadingState.response[index], searchType: _favSearchCtr.type, - callFn: () => _favSearchCtr.type != 1 - ? _favSearchCtr.onCancelFav( - loadingState.response[index].id!, - loadingState.response[index].type, - ) - : {}, + callFn: _favSearchCtr.type != 1 + ? () { + _favSearchCtr.onCancelFav( + loadingState.response[index].id!, + loadingState.response[index].type, + ); + } + : null, ); }, childCount: loadingState.response.length, diff --git a/lib/pages/history/widgets/item.dart b/lib/pages/history/widgets/item.dart index 3cb08608e..e8734f59d 100644 --- a/lib/pages/history/widgets/item.dart +++ b/lib/pages/history/widgets/item.dart @@ -1,3 +1,4 @@ +import 'package:PiliPalaX/common/widgets/image_save.dart'; import 'package:PiliPalaX/pages/common/multi_select_controller.dart'; import 'package:PiliPalaX/pages/fav_search/controller.dart'; import 'package:PiliPalaX/utils/app_scheme.dart'; @@ -152,6 +153,11 @@ class HistoryItem extends StatelessWidget { }, onLongPress: () { if (ctr is FavSearchController) { + imageSaveDialog( + context: context, + title: videoItem.title, + cover: videoItem.cover, + ); return; } if (!ctr!.enableMultiSelect.value) { diff --git a/lib/pages/media/view.dart b/lib/pages/media/view.dart index fc730fe3a..2d4c11eae 100644 --- a/lib/pages/media/view.dart +++ b/lib/pages/media/view.dart @@ -3,7 +3,6 @@ import 'dart:async'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; -import 'package:flutter/services.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/models/user/fav_folder.dart'; diff --git a/lib/pages/member/new/widget/edit_profile_page.dart b/lib/pages/member/new/widget/edit_profile_page.dart index eef997a81..9f418130d 100644 --- a/lib/pages/member/new/widget/edit_profile_page.dart +++ b/lib/pages/member/new/widget/edit_profile_page.dart @@ -110,7 +110,8 @@ class _EditProfilePageState extends State { padding: const EdgeInsets.symmetric(vertical: 5), child: ClipOval( child: CachedNetworkImage( - imageUrl: loadingState.response['face'], + imageUrl: + (loadingState.response['face'] as String).http2https, ), ), ), diff --git a/lib/pages/member/new/widget/user_info_card.dart b/lib/pages/member/new/widget/user_info_card.dart index 9c5f8d88d..e097690c3 100644 --- a/lib/pages/member/new/widget/user_info_card.dart +++ b/lib/pages/member/new/widget/user_info_card.dart @@ -78,7 +78,7 @@ class UserInfoCard extends StatelessWidget { ); }, child: CachedNetworkImage( - imageUrl: imgUrl ?? '', + imageUrl: imgUrl?.http2https ?? '', width: double.infinity, height: 135, imageBuilder: (context, imageProvider) => Container( @@ -128,14 +128,14 @@ class UserInfoCard extends StatelessWidget { if (card.vip?.vipStatus == 1) ...[ const SizedBox(width: 8), Image.network( - card.vip!.label!.image!, + card.vip!.label!.image!.http2https, height: 20, ), ], if (card.nameplate?.image?.isNotEmpty == true) ...[ const SizedBox(width: 8), Image.network( - card.nameplate!.image!, + card.nameplate!.image!.http2https, height: 20, ), ], @@ -191,7 +191,7 @@ class UserInfoCard extends StatelessWidget { child: CachedNetworkImage( width: 18, height: 18, - imageUrl: card.officialVerify!.icon!, + imageUrl: card.officialVerify!.icon!.http2https, ), ), ), diff --git a/lib/pages/member/view.dart b/lib/pages/member/view.dart index df2755d4a..1abf455d0 100644 --- a/lib/pages/member/view.dart +++ b/lib/pages/member/view.dart @@ -4,7 +4,6 @@ import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/utils/extension.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:get/get.dart'; @@ -434,8 +433,9 @@ class _MemberPageState extends State .memberInfo.value.vip?.label?['img_label_uri_hans'] != '') CachedNetworkImage( - imageUrl: _memberController - .memberInfo.value.vip!.label!['img_label_uri_hans'], + imageUrl: (_memberController.memberInfo.value.vip! + .label!['img_label_uri_hans'] as String) + .http2https, height: 20, // semanticLabel: // _memberController.memberInfo.value.vip!.label!['text'], @@ -444,8 +444,9 @@ class _MemberPageState extends State ?.label?['img_label_uri_hans_static'] != '') CachedNetworkImage( - imageUrl: _memberController.memberInfo.value.vip! - .label!['img_label_uri_hans_static'], + imageUrl: (_memberController.memberInfo.value.vip! + .label!['img_label_uri_hans_static'] as String) + .http2https, height: 20, // semanticLabel: // _memberController.memberInfo.value.vip!.label!['text'], diff --git a/lib/pages/video/detail/introduction/controller.dart b/lib/pages/video/detail/introduction/controller.dart index 621d10334..18b08df80 100644 --- a/lib/pages/video/detail/introduction/controller.dart +++ b/lib/pages/video/detail/introduction/controller.dart @@ -5,7 +5,6 @@ import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/utils/utils.dart'; import 'package:expandable/expandable.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:get/get_navigation/src/dialog/dialog_route.dart'; diff --git a/lib/pages/video/detail/introduction/widgets/create_fav_page.dart b/lib/pages/video/detail/introduction/widgets/create_fav_page.dart index 1e3390c62..d91482bf8 100644 --- a/lib/pages/video/detail/introduction/widgets/create_fav_page.dart +++ b/lib/pages/video/detail/introduction/widgets/create_fav_page.dart @@ -1,6 +1,7 @@ import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/http/msg.dart'; import 'package:PiliPalaX/http/user.dart'; +import 'package:PiliPalaX/utils/extension.dart'; import 'package:PiliPalaX/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:easy_debounce/easy_throttle.dart'; @@ -235,7 +236,7 @@ class _CreateFavPageState extends State { return ClipRRect( borderRadius: BorderRadius.circular(6), child: CachedNetworkImage( - imageUrl: _cover!, + imageUrl: _cover!.http2https, height: constraints.maxHeight, width: constraints.maxHeight * 16 / 9, fit: BoxFit.cover, diff --git a/lib/pages/video/detail/reply/widgets/reply_item.dart b/lib/pages/video/detail/reply/widgets/reply_item.dart index 7ab54e40b..c98feccb2 100644 --- a/lib/pages/video/detail/reply/widgets/reply_item.dart +++ b/lib/pages/video/detail/reply/widgets/reply_item.dart @@ -6,7 +6,6 @@ import 'package:PiliPalaX/utils/extension.dart'; import 'package:PiliPalaX/utils/global_data.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/common/widgets/badge.dart'; @@ -761,7 +760,8 @@ class ReplyItem extends StatelessWidget { if (content.jumpUrl[matchStr]?['prefix_icon'] != null) ...[ WidgetSpan( child: Image.network( - content.jumpUrl[matchStr]['prefix_icon'], + (content.jumpUrl[matchStr]['prefix_icon'] as String) + .http2https, height: 19, color: Theme.of(context).colorScheme.primary, ), @@ -907,7 +907,8 @@ class ReplyItem extends StatelessWidget { if (content.jumpUrl[patternStr]?['prefix_icon'] != null) ...[ WidgetSpan( child: Image.network( - content.jumpUrl[patternStr]['prefix_icon'], + (content.jumpUrl[patternStr]['prefix_icon'] as String) + .http2https, height: 19, color: Theme.of(context).colorScheme.primary, ), diff --git a/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart b/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart index 764003fea..5673902de 100644 --- a/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart @@ -9,7 +9,6 @@ import 'package:PiliPalaX/utils/extension.dart'; import 'package:PiliPalaX/utils/global_data.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; @@ -788,7 +787,7 @@ class ReplyItemGrpc extends StatelessWidget { if (content.url[matchStr]?.hasPrefixIcon() == true) ...[ WidgetSpan( child: Image.network( - content.url[matchStr]!.prefixIcon, + content.url[matchStr]!.prefixIcon.http2https, height: 19, color: Theme.of(context).colorScheme.primary, ), @@ -948,7 +947,7 @@ class ReplyItemGrpc extends StatelessWidget { if (content.url[patternStr]?.hasPrefixIcon() == true) ...[ WidgetSpan( child: Image.network( - content.url[patternStr]!.prefixIcon, + content.url[patternStr]!.prefixIcon.http2https, height: 19, color: Theme.of(context).colorScheme.primary, ), diff --git a/lib/utils/download.dart b/lib/utils/download.dart index 636ae3bff..ab0413aaf 100644 --- a/lib/utils/download.dart +++ b/lib/utils/download.dart @@ -1,6 +1,7 @@ import 'dart:typed_data'; import 'package:PiliPalaX/http/init.dart'; +import 'package:PiliPalaX/utils/extension.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; @@ -107,7 +108,7 @@ class DownloadUtils { }, ); var response = await Request().get( - imgList[i], + imgList[i].http2https, options: Options(responseType: ResponseType.bytes), ); String picName =