diff --git a/lib/common/widgets/image/network_img_layer.dart b/lib/common/widgets/image/network_img_layer.dart index 661582e62..83451d2ae 100644 --- a/lib/common/widgets/image/network_img_layer.dart +++ b/lib/common/widgets/image/network_img_layer.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/assets.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/models/common/image_type.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:cached_network_image_ce/cached_network_image.dart'; import 'package:flutter/material.dart'; @@ -19,7 +20,7 @@ class NetworkImgLayer extends StatelessWidget { this.getPlaceHolder, this.fit = .cover, this.alignment = .center, - this.cacheWidth, + this.cacheWidthBool, }); final String? src; @@ -33,7 +34,7 @@ class NetworkImgLayer extends StatelessWidget { final ValueGetter? getPlaceHolder; final BoxFit fit; final Alignment alignment; - final bool? cacheWidth; + final bool? cacheWidthBool; @override Widget build(BuildContext context) { @@ -60,7 +61,7 @@ class NetworkImgLayer extends StatelessWidget { required bool isAvatar, }) { double? memCacheWidth, memCacheHeight; - if (cacheWidth ?? width <= height) { + if (cacheWidthBool ?? width <= height) { memCacheWidth = width; } else { memCacheHeight = height; @@ -69,8 +70,8 @@ class NetworkImgLayer extends StatelessWidget { imageUrl: ImageUtils.thumbnailUrl(src, maxQuality: quality), width: width, height: height, - memCacheWidth: memCacheWidth, - memCacheHeight: memCacheHeight, + memCacheWidth: memCacheWidth?.cacheSize, + memCacheHeight: memCacheHeight?.cacheSize, fit: fit, alignment: alignment, fadeOutDuration: fadeOutDuration, @@ -105,7 +106,7 @@ class NetworkImgLayer extends StatelessWidget { isAvatar ? Assets.avatarPlaceHolder : Assets.loading, width: width, height: height, - cacheWidth: width, + cacheWidth: width.cacheSize, ), ), ); diff --git a/lib/common/widgets/image_grid/image_grid_view.dart b/lib/common/widgets/image_grid/image_grid_view.dart index 7434b9eaf..cf5fafcf2 100644 --- a/lib/common/widgets/image_grid/image_grid_view.dart +++ b/lib/common/widgets/image_grid/image_grid_view.dart @@ -231,7 +231,7 @@ class ImageGridView extends StatelessWidget { Assets.loading, width: width, height: height, - cacheWidth: width, + cacheWidth: width.cacheSize, ), ); return List.generate(picArr.length, (index) { @@ -251,7 +251,7 @@ class ImageGridView extends StatelessWidget { height: height, borderRadius: borderRadius, alignment: item.isLongPic ? .topCenter : .center, - cacheWidth: item.width <= item.height, + cacheWidthBool: item.width <= item.height, getPlaceHolder: () => placeHolder, ), if (item.isLivePhoto) diff --git a/lib/common/widgets/image_viewer/gallery_viewer.dart b/lib/common/widgets/image_viewer/gallery_viewer.dart index 0c493e3fd..886fc096c 100644 --- a/lib/common/widgets/image_viewer/gallery_viewer.dart +++ b/lib/common/widgets/image_viewer/gallery_viewer.dart @@ -478,8 +478,8 @@ class _GalleryViewerState extends State child = Image( key: _key, image: ResizeImage.resizeIfNeeded( - cacheWidth, - cacheHeight, + cacheWidth?.cacheSize, + cacheHeight?.cacheSize, CachedNetworkImageProvider(_getActualUrl(item.url, index: index)), ), minScale: widget.minScale, @@ -498,8 +498,8 @@ class _GalleryViewerState extends State } else { return Image( image: ResizeImage.resizeIfNeeded( - cacheWidth, - cacheHeight, + cacheWidth?.cacheSize, + cacheHeight?.cacheSize, CachedNetworkImageProvider( ImageUtils.thumbnailUrl( item.url, diff --git a/lib/common/widgets/pendant_avatar.dart b/lib/common/widgets/pendant_avatar.dart index 3fe4258e9..7ebf6a3bd 100644 --- a/lib/common/widgets/pendant_avatar.dart +++ b/lib/common/widgets/pendant_avatar.dart @@ -3,6 +3,7 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/extra_hittest_stack.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/avatar_badge_type.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/material.dart'; @@ -141,7 +142,7 @@ class PendantAvatar extends StatelessWidget { Assets.vipIcon, width: badgeSize, height: badgeSize, - cacheWidth: badgeSize, + cacheWidth: badgeSize.cacheSize, semanticLabel: badgeType.desc, ), _ => Icon( diff --git a/lib/pages/about/view.dart b/lib/pages/about/view.dart index 3c250f6ab..1011d1a4f 100644 --- a/lib/pages/about/view.dart +++ b/lib/pages/about/view.dart @@ -109,7 +109,7 @@ class _AboutPageState extends State { width: 150, height: 150, excludeFromSemantics: true, - cacheWidth: 150, + cacheWidth: 150.cacheSize, Assets.logo, ), ), diff --git a/lib/pages/article/view.dart b/lib/pages/article/view.dart index b626cfd57..27428a7dd 100644 --- a/lib/pages/article/view.dart +++ b/lib/pages/article/view.dart @@ -19,6 +19,7 @@ import 'package:PiliPlus/pages/dynamics_repost/view.dart'; import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/extension/get_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/num_utils.dart'; @@ -290,8 +291,10 @@ class _ArticlePageState extends CommonDynPageState { CachedNetworkImage( height: height, width: maxWidth, - memCacheWidth: memCacheWidth, - memCacheHeight: memCacheHeight, + memCacheWidth: + memCacheWidth?.cacheSize, + memCacheHeight: + memCacheHeight?.cacheSize, fit: pic.isLongPic == true ? BoxFit.cover : null, diff --git a/lib/pages/article/widgets/article_ops.dart b/lib/pages/article/widgets/article_ops.dart index 33520cc6b..4f9b3324f 100644 --- a/lib/pages/article/widgets/article_ops.dart +++ b/lib/pages/article/widgets/article_ops.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/models_new/article/article_view/ops.dart'; import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:cached_network_image_ce/cached_network_image.dart'; import 'package:flutter/material.dart'; @@ -71,7 +72,7 @@ class ArticleOpus extends StatelessWidget { child: CachedNetworkImage( width: width, height: height, - memCacheWidth: width, + memCacheWidth: width.cacheSize, imageUrl: ImageUtils.thumbnailUrl( card.url, maxQuality: 60, diff --git a/lib/pages/article/widgets/html_render.dart b/lib/pages/article/widgets/html_render.dart index 626aa14dc..600fdfda4 100644 --- a/lib/pages/article/widgets/html_render.dart +++ b/lib/pages/article/widgets/html_render.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/assets.dart'; import 'package:PiliPlus/common/widgets/image_viewer/hero.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:cached_network_image_ce/cached_network_image.dart'; @@ -42,7 +43,7 @@ Widget htmlRender({ if (clazz?.contains('cut-off') == true || height != null) { return CachedNetworkImage( width: maxWidth, - memCacheWidth: maxWidth, + memCacheWidth: maxWidth.cacheSize, height: height != null ? double.parse(height) : null, imageUrl: ImageUtils.thumbnailUrl(imgUrl), fit: BoxFit.contain, @@ -60,7 +61,7 @@ Widget htmlRender({ child: CachedNetworkImage( width: width, height: isEmote ? 22.0 : null, - memCacheWidth: width, + memCacheWidth: width.cacheSize, imageUrl: ImageUtils.thumbnailUrl(imgUrl, maxQuality: 60), fadeInDuration: const Duration(milliseconds: 120), fadeOutDuration: const Duration(milliseconds: 120), diff --git a/lib/pages/article/widgets/opus_content.dart b/lib/pages/article/widgets/opus_content.dart index 93dd15e4e..a090df6d6 100644 --- a/lib/pages/article/widgets/opus_content.dart +++ b/lib/pages/article/widgets/opus_content.dart @@ -13,6 +13,7 @@ import 'package:PiliPlus/models/dynamics/article_content_model.dart' import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; @@ -224,7 +225,7 @@ class OpusContent extends StatelessWidget { Widget child = CachedNetworkImage( width: width, height: height, - memCacheWidth: width, + memCacheWidth: width.cacheSize, imageUrl: ImageUtils.thumbnailUrl(pic.url!, maxQuality: 60), fadeInDuration: const Duration(milliseconds: 120), fadeOutDuration: const Duration(milliseconds: 120), @@ -265,7 +266,7 @@ class OpusContent extends StatelessWidget { fit: .contain, height: height, width: maxWidth, - memCacheWidth: maxWidth, + memCacheWidth: maxWidth.cacheSize, imageUrl: ImageUtils.thumbnailUrl(element.line!.pic!.url!), placeholder: (_, _) => const SizedBox.shrink(), ); @@ -736,7 +737,7 @@ Widget moduleBlockedItem( : moduleBlocked.bgImg!.imgDay, ), ), - width: width, + width: width.cacheSize, ), ), ); @@ -745,7 +746,7 @@ Widget moduleBlockedItem( Widget icon(double width) { return CachedNetworkImage( width: width, - memCacheWidth: width, + memCacheWidth: width.cacheSize, fit: .contain, imageUrl: ImageUtils.thumbnailUrl( isDarkMode ? moduleBlocked.icon!.imgDark : moduleBlocked.icon!.imgDay, @@ -781,7 +782,7 @@ Widget moduleBlockedItem( CachedNetworkImage( height: 16, color: Colors.white, - memCacheHeight: 16, + memCacheHeight: 16.cacheSize, placeholder: (_, _) => const SizedBox.shrink(), imageUrl: ImageUtils.safeThumbnailUrl(moduleBlocked.button!.icon), ), diff --git a/lib/pages/audio/view.dart b/lib/pages/audio/view.dart index 29ba477a2..dabe8706a 100644 --- a/lib/pages/audio/view.dart +++ b/lib/pages/audio/view.dart @@ -302,7 +302,7 @@ class _AudioPageState extends State { Assets.livingStatic, width: 16, height: 16, - cacheWidth: 16, + cacheWidth: 16.cacheSize, color: colorScheme.primary, ), ), @@ -344,7 +344,7 @@ class _AudioPageState extends State { Assets.livingStatic, width: 16, height: 16, - cacheWidth: 16, + cacheWidth: 16.cacheSize, color: colorScheme.primary, ), ), @@ -905,7 +905,7 @@ class _AudioPageState extends State { src: cover, width: 170, height: 170, - cacheWidth: false, + cacheWidthBool: false, ), ), ), diff --git a/lib/pages/common/publish/common_rich_text_pub_page.dart b/lib/pages/common/publish/common_rich_text_pub_page.dart index 3303dee35..67a2581bb 100644 --- a/lib/pages/common/publish/common_rich_text_pub_page.dart +++ b/lib/pages/common/publish/common_rich_text_pub_page.dart @@ -15,6 +15,7 @@ import 'package:PiliPlus/pages/common/publish/common_publish_page.dart'; import 'package:PiliPlus/pages/dynamics_mention/view.dart'; import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:PiliPlus/utils/extension/file_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; @@ -141,13 +142,13 @@ abstract class CommonRichTextPubPageState File(e.path), height: height, filterQuality: .low, - cacheHeight: height, + cacheHeight: height.cacheSize, ), OpusPicModel e => CachedNetworkImage( imageUrl: ImageUtils.thumbnailUrl(e.url!), height: height, filterQuality: .low, - memCacheHeight: height, + memCacheHeight: height.cacheSize, fadeInDuration: .zero, fadeOutDuration: .zero, placeholder: (_, _) => const SizedBox(width: 42), diff --git a/lib/pages/download/detail/widgets/item.dart b/lib/pages/download/detail/widgets/item.dart index 30ecf8df2..607f53c6c 100644 --- a/lib/pages/download/detail/widgets/item.dart +++ b/lib/pages/download/detail/widgets/item.dart @@ -188,15 +188,15 @@ class DetailItem extends StatelessWidget { width: maxWidth, height: maxHeight, fit: BoxFit.cover, - cacheWidth: cacheWidth, - cacheHeight: cacheHeight, + cacheWidth: cacheWidth?.cacheSize, + cacheHeight: cacheHeight?.cacheSize, ), ) : NetworkImgLayer( src: entry.cover, width: maxWidth, height: maxHeight, - cacheWidth: entry.pageData?.cacheWidth, + cacheWidthBool: entry.pageData?.cacheWidth, ); }, ), diff --git a/lib/pages/dynamics/widgets/author_panel.dart b/lib/pages/dynamics/widgets/author_panel.dart index b97764df9..76394f3eb 100644 --- a/lib/pages/dynamics/widgets/author_panel.dart +++ b/lib/pages/dynamics/widgets/author_panel.dart @@ -18,6 +18,7 @@ import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/color_utils.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; @@ -182,7 +183,7 @@ class AuthorPanel extends StatelessWidget { child: Center( child: CachedNetworkImage( height: height, - memCacheHeight: height, + memCacheHeight: height.cacheSize, imageUrl: ImageUtils.safeThumbnailUrl( moduleAuthor.decorate!.cardUrl, ), diff --git a/lib/pages/dynamics/widgets/live_panel_sub.dart b/lib/pages/dynamics/widgets/live_panel_sub.dart index a282e7f6a..d0e042bba 100644 --- a/lib/pages/dynamics/widgets/live_panel_sub.dart +++ b/lib/pages/dynamics/widgets/live_panel_sub.dart @@ -3,6 +3,7 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:flutter/material.dart'; Widget livePanelSub( @@ -58,7 +59,7 @@ Widget livePanelSub( top: 6, child: Image.asset( height: 16, - cacheHeight: 16, + cacheHeight: 16.cacheSize, Assets.livingRect, filterQuality: FilterQuality.low, ), diff --git a/lib/pages/dynamics/widgets/live_rcmd_panel.dart b/lib/pages/dynamics/widgets/live_rcmd_panel.dart index a50e44ccf..665dc72cc 100644 --- a/lib/pages/dynamics/widgets/live_rcmd_panel.dart +++ b/lib/pages/dynamics/widgets/live_rcmd_panel.dart @@ -3,6 +3,7 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:flutter/material.dart'; Widget liveRcmdPanel( @@ -52,7 +53,7 @@ Widget liveRcmdPanel( top: 6, child: Image.asset( height: 16, - cacheHeight: 16, + cacheHeight: 16.cacheSize, Assets.livingRect, filterQuality: FilterQuality.low, ), diff --git a/lib/pages/dynamics/widgets/module_panel.dart b/lib/pages/dynamics/widgets/module_panel.dart index 542c6a712..e7e105a2b 100644 --- a/lib/pages/dynamics/widgets/module_panel.dart +++ b/lib/pages/dynamics/widgets/module_panel.dart @@ -11,6 +11,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/live_panel_sub.dart'; import 'package:PiliPlus/pages/dynamics/widgets/live_rcmd_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/video_panel.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:cached_network_image_ce/cached_network_image.dart'; @@ -144,7 +145,7 @@ Widget module( width: 45, height: 45, fit: BoxFit.cover, - memCacheWidth: 45, + memCacheWidth: 45.cacheSize, imageUrl: ImageUtils.safeThumbnailUrl(common.cover), ), ), diff --git a/lib/pages/dynamics/widgets/up_panel.dart b/lib/pages/dynamics/widgets/up_panel.dart index cefef163d..2f2dc2929 100644 --- a/lib/pages/dynamics/widgets/up_panel.dart +++ b/lib/pages/dynamics/widgets/up_panel.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/models/dynamics/up.dart'; import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/live_follow/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; @@ -158,7 +159,7 @@ class _UpPanelState extends State { child: Image.asset( width: 38, height: 38, - cacheWidth: 38, + cacheWidth: 38.cacheSize, Assets.logo, ), ); diff --git a/lib/pages/dynamics/widgets/video_panel.dart b/lib/pages/dynamics/widgets/video_panel.dart index 67b321c07..427835535 100644 --- a/lib/pages/dynamics/widgets/video_panel.dart +++ b/lib/pages/dynamics/widgets/video_panel.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:flutter/material.dart'; @@ -115,7 +116,7 @@ Widget videoSeasonWidget( Assets.play, width: 50, height: 50, - cacheHeight: 50, + cacheHeight: 50.cacheSize, ), ], ), diff --git a/lib/pages/dynamics_topic/view.dart b/lib/pages/dynamics_topic/view.dart index 99ae95bb3..38fa0e7d7 100644 --- a/lib/pages/dynamics_topic/view.dart +++ b/lib/pages/dynamics_topic/view.dart @@ -14,6 +14,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/dynamic_panel.dart'; import 'package:PiliPlus/pages/dynamics_create/view.dart'; import 'package:PiliPlus/pages/dynamics_topic/controller.dart'; import 'package:PiliPlus/pages/webview/view.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/num_utils.dart'; @@ -189,7 +190,7 @@ class _DynTopicPageState extends State decoration: BoxDecoration( image: DecorationImage( image: ResizeImage( - width: MediaQuery.widthOf(context), + width: MediaQuery.widthOf(context).cacheSize, const AssetImage(Assets.topicHeader), ), filterQuality: FilterQuality.low, diff --git a/lib/pages/episode_panel/view.dart b/lib/pages/episode_panel/view.dart index 1cb302e72..0a6f37010 100644 --- a/lib/pages/episode_panel/view.dart +++ b/lib/pages/episode_panel/view.dart @@ -24,6 +24,7 @@ import 'package:PiliPlus/pages/video/introduction/ugc/widgets/page.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; @@ -472,7 +473,7 @@ class _EpisodePanelState extends State src: cover, width: 160, height: 100, - cacheWidth: cacheWidth, + cacheWidthBool: cacheWidth, ), if (duration != null && duration > 0) PBadge( @@ -506,7 +507,7 @@ class _EpisodePanelState extends State Assets.livingStatic, color: primary, height: 12, - cacheHeight: 12, + cacheHeight: 12.cacheSize, semanticLabel: "正在播放:", ), Expanded( diff --git a/lib/pages/later/widgets/video_card_h_later.dart b/lib/pages/later/widgets/video_card_h_later.dart index 309b7b700..41146173a 100644 --- a/lib/pages/later/widgets/video_card_h_later.dart +++ b/lib/pages/later/widgets/video_card_h_later.dart @@ -97,7 +97,7 @@ class VideoCardHLater extends StatelessWidget { src: videoItem.pic, width: maxWidth, height: maxHeight, - cacheWidth: videoItem.dimension?.cacheWidth, + cacheWidthBool: videoItem.dimension?.cacheWidth, ), if (videoItem.isCharging == true) const PBadge( diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index 29b01b4db..6885ef33e 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -32,6 +32,7 @@ import 'package:PiliPlus/plugin/pl_player/utils/danmaku_options.dart'; import 'package:PiliPlus/plugin/pl_player/view/view.dart'; import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/utils/android/bindings.g.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; @@ -369,7 +370,7 @@ class _LiveRoomPageState extends State fit: BoxFit.cover, width: maxWidth, height: maxHeight, - memCacheWidth: maxWidth, + memCacheWidth: maxWidth.cacheSize, imageUrl: ImageUtils.safeThumbnailUrl(appBackground), placeholder: (_, _) => const SizedBox.shrink(), ); @@ -379,7 +380,7 @@ class _LiveRoomPageState extends State fit: BoxFit.cover, width: maxWidth, height: maxHeight, - cacheWidth: maxWidth, + cacheWidth: maxWidth.cacheSize, ); } return Positioned.fill( diff --git a/lib/pages/live_search/widgets/live_search_user.dart b/lib/pages/live_search/widgets/live_search_user.dart index cbf1b754b..4ca5c4847 100644 --- a/lib/pages/live_search/widgets/live_search_user.dart +++ b/lib/pages/live_search/widgets/live_search_user.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/assets.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/live/live_search/user_item.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/material.dart'; @@ -51,7 +52,7 @@ class LiveSearchUserItem extends StatelessWidget { const SizedBox(width: 10), Image.asset( height: 14, - cacheHeight: 14, + cacheHeight: 14.cacheSize, Assets.livingRect, ), ], diff --git a/lib/pages/member/widget/medal_wall.dart b/lib/pages/member/widget/medal_wall.dart index 179de8357..9f17a39bf 100644 --- a/lib/pages/member/widget/medal_wall.dart +++ b/lib/pages/member/widget/medal_wall.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; import 'package:PiliPlus/models_new/live/live_medal_wall/data.dart'; import 'package:PiliPlus/pages/member/widget/medal_widget.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/material.dart'; @@ -108,7 +109,7 @@ class MedalWall extends StatelessWidget { child: Image.asset( Assets.livingStatic, height: 16, - cacheHeight: 16, + cacheHeight: 16.cacheSize, color: colorScheme.primary, ), ), diff --git a/lib/pages/member/widget/user_info_card.dart b/lib/pages/member/widget/user_info_card.dart index ffcf43362..460adbb36 100644 --- a/lib/pages/member/widget/user_info_card.dart +++ b/lib/pages/member/widget/user_info_card.dart @@ -27,6 +27,7 @@ import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/bili_utils.dart'; import 'package:PiliPlus/utils/color_utils.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; @@ -222,7 +223,7 @@ class UserInfoCard extends StatelessWidget { isSeniorMember: card.levelInfo?.identity == 2, ), height: 11, - cacheHeight: 11, + cacheHeight: 11.cacheSize, semanticLabel: '等级${card.levelInfo?.currentLevel}', ), if (card.vip?.status == 1) @@ -630,7 +631,7 @@ class UserInfoCard extends StatelessWidget { alignment: Alignment(0.0, img.dy), height: kHeaderHeight, width: width, - memCacheWidth: memCacheWidth, + memCacheWidth: memCacheWidth.cacheSize, imageUrl: ImageUtils.thumbnailUrl(img.header), fadeInDuration: const Duration(milliseconds: 120), fadeOutDuration: const Duration(milliseconds: 120), @@ -688,7 +689,7 @@ class UserInfoCard extends StatelessWidget { alignment: alignment, height: kHeaderHeight, width: width, - memCacheWidth: width, + memCacheWidth: width.cacheSize, imageUrl: ImageUtils.thumbnailUrl(imgUrl), placeholder: (_, _) => const SizedBox(width: .infinity, height: kHeaderHeight), @@ -735,7 +736,7 @@ class UserInfoCard extends StatelessWidget { if (icon != null) ...[ CachedNetworkImage( height: 20, - memCacheHeight: 20, + memCacheHeight: 20.cacheSize, imageUrl: ImageUtils.thumbnailUrl(icon), placeholder: (_, _) => const SizedBox.shrink(), fadeInDuration: .zero, diff --git a/lib/pages/mine/view.dart b/lib/pages/mine/view.dart index 12b9accc1..64e72e31d 100644 --- a/lib/pages/mine/view.dart +++ b/lib/pages/mine/view.dart @@ -10,6 +10,7 @@ import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/pages/mine/widgets/item.dart'; import 'package:PiliPlus/utils/bili_utils.dart'; import 'package:PiliPlus/utils/extension/get_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide ListTile; @@ -213,7 +214,7 @@ class _MediaPageState extends State child: Image.asset( Assets.vipIcon, height: 19, - cacheHeight: 19, + cacheHeight: 19.cacheSize, semanticLabel: "大会员", ), ), @@ -223,7 +224,7 @@ class _MediaPageState extends State child: Image.asset( width: 55, height: 55, - cacheHeight: 55, + cacheHeight: 55.cacheSize, Assets.avatarPlaceHolder, semanticLabel: "默认头像", ), @@ -257,7 +258,7 @@ class _MediaPageState extends State isSeniorMember: userInfo.isSeniorMember == 1, ), height: 10, - cacheHeight: 10, + cacheHeight: 10.cacheSize, ), ], ), diff --git a/lib/pages/pgc_review/child/view.dart b/lib/pages/pgc_review/child/view.dart index 98691ed6d..1e87d28fe 100644 --- a/lib/pages/pgc_review/child/view.dart +++ b/lib/pages/pgc_review/child/view.dart @@ -15,6 +15,7 @@ import 'package:PiliPlus/pages/pgc_review/post/view.dart'; import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/bili_utils.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; @@ -237,7 +238,7 @@ class _PgcReviewChildPageState extends State Image.asset( BiliUtils.levelName(item.author!.level!), height: 11, - cacheHeight: 11, + cacheHeight: 11.cacheSize, ), ], ), diff --git a/lib/pages/save_panel/view.dart b/lib/pages/save_panel/view.dart index 2c0bfa0ff..dc9b27dc2 100644 --- a/lib/pages/save_panel/view.dart +++ b/lib/pages/save_panel/view.dart @@ -15,6 +15,7 @@ import 'package:PiliPlus/pages/video/introduction/ugc/controller.dart'; import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; @@ -510,7 +511,7 @@ class _SavePanelState extends State { child: Image.asset( Assets.logo2, width: 100, - cacheWidth: 100, + cacheWidth: 100.cacheSize, color: theme.colorScheme.onSurfaceVariant, ), ), diff --git a/lib/pages/search_panel/user/widgets/item.dart b/lib/pages/search_panel/user/widgets/item.dart index f411defee..62519e7f9 100644 --- a/lib/pages/search_panel/user/widgets/item.dart +++ b/lib/pages/search_panel/user/widgets/item.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/utils/bili_utils.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get_core/src/get_main.dart'; @@ -57,7 +58,7 @@ class SearchUserItem extends StatelessWidget { isSeniorMember: item.isSeniorMember == 1, ), height: 11, - cacheHeight: 11, + cacheHeight: 11.cacheSize, semanticLabel: '等级${item.level}', ), ], diff --git a/lib/pages/search_trending/view.dart b/lib/pages/search_trending/view.dart index 16d882bff..5f164f83f 100644 --- a/lib/pages/search_trending/view.dart +++ b/lib/pages/search_trending/view.dart @@ -11,6 +11,7 @@ import 'package:PiliPlus/pages/search_trending/controller.dart'; import 'package:PiliPlus/utils/color_utils.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/extension/get_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:cached_network_image_ce/cached_network_image.dart'; @@ -85,7 +86,7 @@ class _SearchTrendingPageState extends State { child: Image.asset( width: width, height: height, - cacheWidth: width, + cacheWidth: width.cacheSize, Assets.trendingBanner, filterQuality: FilterQuality.low, ), @@ -207,7 +208,7 @@ class _SearchTrendingPageState extends State { const SizedBox(width: 4), CachedNetworkImage( height: 16, - memCacheHeight: 16, + memCacheHeight: 16.cacheSize, imageUrl: ImageUtils.thumbnailUrl(item.icon!), placeholder: (_, _) => const SizedBox.shrink(), ), @@ -217,7 +218,7 @@ class _SearchTrendingPageState extends State { Assets.livingRect, width: 51, height: 16, - cacheHeight: 16, + cacheHeight: 16.cacheSize, ), ], ], diff --git a/lib/pages/video/download_panel/view.dart b/lib/pages/video/download_panel/view.dart index dd77670d4..1c18aa745 100644 --- a/lib/pages/video/download_panel/view.dart +++ b/lib/pages/video/download_panel/view.dart @@ -18,6 +18,7 @@ import 'package:PiliPlus/services/download/download_service.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -393,7 +394,7 @@ class _DownloadPanelState extends State { src: cover, width: 160, height: 110, - cacheWidth: cacheWidth, + cacheWidthBool: cacheWidth, ), if (duration != null && duration > 0) PBadge( @@ -427,7 +428,7 @@ class _DownloadPanelState extends State { Assets.livingStatic, color: primary, height: 12, - cacheHeight: 12, + cacheHeight: 12.cacheSize, semanticLabel: '正在播放:', ), Expanded( diff --git a/lib/pages/video/introduction/local/view.dart b/lib/pages/video/introduction/local/view.dart index 31d7e8976..86beb6cb9 100644 --- a/lib/pages/video/introduction/local/view.dart +++ b/lib/pages/video/introduction/local/view.dart @@ -7,6 +7,7 @@ import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart'; import 'package:PiliPlus/pages/video/introduction/local/controller.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/path_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -86,8 +87,8 @@ class _LocalIntroPanelState extends State width: 160, height: 110, fit: BoxFit.cover, - cacheWidth: cacheWidth ? 160 : null, - cacheHeight: cacheWidth ? null : 110, + cacheWidth: cacheWidth ? 160.cacheSize : null, + cacheHeight: cacheWidth ? null : 110.cacheSize, ), ) : NetworkImgLayer( diff --git a/lib/pages/video/introduction/pgc/widgets/pgc_panel.dart b/lib/pages/video/introduction/pgc/widgets/pgc_panel.dart index b9445acad..e2e9ae337 100644 --- a/lib/pages/video/introduction/pgc/widgets/pgc_panel.dart +++ b/lib/pages/video/introduction/pgc/widgets/pgc_panel.dart @@ -7,6 +7,7 @@ import 'package:PiliPlus/models_new/video/video_detail/episode.dart' hide EpisodeItem; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -193,7 +194,7 @@ class _PgcPanelState extends State { Assets.livingStatic, color: theme.primary, height: 12, - cacheHeight: 12, + cacheHeight: 12.cacheSize, semanticLabel: "正在播放:", ), ), @@ -215,7 +216,7 @@ class _PgcPanelState extends State { Image.asset( Assets.vipIcon, height: 16, - cacheHeight: 16, + cacheHeight: 16.cacheSize, semanticLabel: "大会员", ) else diff --git a/lib/pages/video/introduction/ugc/widgets/page.dart b/lib/pages/video/introduction/ugc/widgets/page.dart index 231b614cf..c46c6821d 100644 --- a/lib/pages/video/introduction/ugc/widgets/page.dart +++ b/lib/pages/video/introduction/ugc/widgets/page.dart @@ -5,6 +5,7 @@ import 'package:PiliPlus/common/assets.dart'; import 'package:PiliPlus/models_new/video/video_detail/page.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/controller.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -200,7 +201,7 @@ class _PagesPanelState extends State { Assets.livingStatic, color: theme.colorScheme.primary, height: 12, - cacheHeight: 12, + cacheHeight: 12.cacheSize, semanticLabel: "正在播放:", ), const SizedBox(width: 6), diff --git a/lib/pages/video/introduction/ugc/widgets/season.dart b/lib/pages/video/introduction/ugc/widgets/season.dart index 69c430f5e..f54a656c1 100644 --- a/lib/pages/video/introduction/ugc/widgets/season.dart +++ b/lib/pages/video/introduction/ugc/widgets/season.dart @@ -6,6 +6,7 @@ import 'package:PiliPlus/models_new/video/video_detail/episode.dart'; import 'package:PiliPlus/models_new/video/video_detail/section.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/controller.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -129,7 +130,7 @@ class _SeasonPanelState extends State { Assets.livingStatic, color: theme.colorScheme.primary, height: 12, - cacheHeight: 12, + cacheHeight: 12.cacheSize, semanticLabel: "正在播放:", ), const SizedBox(width: 10), diff --git a/lib/pages/video/member/view.dart b/lib/pages/video/member/view.dart index 6a0c8a17c..bb3c62329 100644 --- a/lib/pages/video/member/view.dart +++ b/lib/pages/video/member/view.dart @@ -19,6 +19,7 @@ import 'package:PiliPlus/pages/video/introduction/ugc/controller.dart'; import 'package:PiliPlus/pages/video/member/controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/bili_utils.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; @@ -260,7 +261,7 @@ class _HorizontalMemberPageState extends State { isSeniorMember: memberInfoModel.isSeniorMember == 1, ), height: 11, - cacheHeight: 11, + cacheHeight: 11.cacheSize, ), ], ), diff --git a/lib/pages/video/note/view.dart b/lib/pages/video/note/view.dart index afbdc0d07..e76971adf 100644 --- a/lib/pages/video/note/view.dart +++ b/lib/pages/video/note/view.dart @@ -9,6 +9,7 @@ import 'package:PiliPlus/pages/video/note/controller.dart'; import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/bili_utils.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' show ExtendedNestedScrollController, ExtendedVisibilityDetector; @@ -264,7 +265,7 @@ class _NoteListPageState extends State isSeniorMember: item.author!.isSeniorMember == 1, ), height: 11, - cacheHeight: 11, + cacheHeight: 11.cacheSize, ), ], ), diff --git a/lib/pages/video/pay_coins/view.dart b/lib/pages/video/pay_coins/view.dart index 23a118ed4..ad8933edf 100644 --- a/lib/pages/video/pay_coins/view.dart +++ b/lib/pages/video/pay_coins/view.dart @@ -214,7 +214,7 @@ class _PayCoinsPageState extends State color: filter, width: boxSize, height: boxSize, - cacheWidth: 100, + cacheWidth: 100.cacheSize, colorBlendMode: .srcATop, ), ), @@ -225,7 +225,7 @@ class _PayCoinsPageState extends State child: Image.asset( height: coinSize, width: coinSize, - cacheWidth: 50, + cacheWidth: 50.cacheSize, color: filter, colorBlendMode: .srcATop, index == 0 ? Assets.coinsOne : Assets.coinsTwo, @@ -263,7 +263,7 @@ class _PayCoinsPageState extends State payImg, width: 110, height: 155, - cacheWidth: 110, + cacheWidth: 110.cacheSize, ), ), ), @@ -354,7 +354,7 @@ class _PayCoinsPageState extends State width: 16, height: 28, index == 0 ? Assets.leftDisable : Assets.left, - cacheWidth: 16, + cacheWidth: 16.cacheSize, ), ), ); @@ -377,7 +377,7 @@ class _PayCoinsPageState extends State width: 16, height: 28, index == 1 ? Assets.rightDisable : Assets.right, - cacheWidth: 16, + cacheWidth: 16.cacheSize, ), ), ); @@ -459,7 +459,7 @@ class _PayCoinsPageState extends State Assets.panelClose, width: 30, height: 30, - cacheWidth: 30, + cacheWidth: 30.cacheSize, ), ), ), diff --git a/lib/pages/video/reply/widgets/reply_item_grpc.dart b/lib/pages/video/reply/widgets/reply_item_grpc.dart index 67a4350f8..28460711c 100644 --- a/lib/pages/video/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/reply/widgets/reply_item_grpc.dart @@ -30,6 +30,7 @@ import 'package:PiliPlus/utils/danmaku_utils.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; @@ -177,7 +178,7 @@ class ReplyItemGrpc extends StatelessWidget { isSeniorMember: senior.isSeniorMember == 1, ), height: 11, - cacheHeight: 11, + cacheHeight: 11.cacheSize, ), if (replyItem.mid == upMid) const PBadge( @@ -248,7 +249,7 @@ class ReplyItemGrpc extends StatelessWidget { height: height, child: CachedNetworkImage( height: height, - memCacheHeight: height, + memCacheHeight: height.cacheSize, imageUrl: ImageUtils.safeThumbnailUrl(garb.cardImage), placeholder: (_, _) => const SizedBox.shrink(), ), @@ -629,7 +630,7 @@ class ReplyItemGrpc extends StatelessWidget { WidgetSpan( child: CachedNetworkImage( height: 19, - memCacheHeight: 19, + memCacheHeight: 19.cacheSize, color: theme.colorScheme.primary, imageUrl: ImageUtils.thumbnailUrl(url.prefixIcon), placeholder: (_, _) => const SizedBox.shrink(), diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index b096a8e45..21fa5e355 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -46,6 +46,7 @@ import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/services/shutdown_timer_service.dart' show shutdownTimerService; import 'package:PiliPlus/utils/accounts.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; @@ -1235,7 +1236,7 @@ class _VideoDetailPageVState extends State src: videoDetailController.cover.value, width: width, height: height, - cacheWidth: true, + cacheWidthBool: true, getPlaceHolder: () => Center( child: Image.asset(Assets.loading), ), @@ -1319,7 +1320,7 @@ class _VideoDetailPageVState extends State Assets.play, width: 60, height: 60, - cacheHeight: 60, + cacheHeight: 60.cacheSize, ), ), ), diff --git a/lib/pages/whisper/widgets/item.dart b/lib/pages/whisper/widgets/item.dart index 87a3fd5e6..d01b8aa3f 100644 --- a/lib/pages/whisper/widgets/item.dart +++ b/lib/pages/whisper/widgets/item.dart @@ -10,6 +10,7 @@ import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart' import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/pages/whisper_secondary/view.dart'; import 'package:PiliPlus/utils/date_utils.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; @@ -280,7 +281,7 @@ class WhisperSessionItem extends StatelessWidget { Image.asset( Assets.livingRect, height: 15, - cacheHeight: 15, + cacheHeight: 15.cacheSize, filterQuality: FilterQuality.low, ), ], diff --git a/lib/pages/whisper_detail/view.dart b/lib/pages/whisper_detail/view.dart index e82e7de69..4879625a9 100644 --- a/lib/pages/whisper_detail/view.dart +++ b/lib/pages/whisper_detail/view.dart @@ -16,6 +16,7 @@ import 'package:PiliPlus/pages/whisper_detail/controller.dart'; import 'package:PiliPlus/pages/whisper_detail/widget/chat_item.dart'; import 'package:PiliPlus/pages/whisper_link_setting/view.dart'; import 'package:PiliPlus/utils/extension/file_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; @@ -89,7 +90,7 @@ class _WhisperDetailPageState Image.asset( Assets.livingRect, height: 16, - cacheHeight: 16, + cacheHeight: 16.cacheSize, filterQuality: FilterQuality.low, ), ], diff --git a/lib/pages/whisper_detail/widget/chat_item.dart b/lib/pages/whisper_detail/widget/chat_item.dart index c8df8c846..04080abb1 100644 --- a/lib/pages/whisper_detail/widget/chat_item.dart +++ b/lib/pages/whisper_detail/widget/chat_item.dart @@ -15,6 +15,7 @@ import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; @@ -804,7 +805,7 @@ class ChatItem extends StatelessWidget { borderRadius: Style.mdRadius, child: CachedNetworkImage( width: maxWidth, - memCacheWidth: maxWidth, + memCacheWidth: maxWidth.cacheSize, imageUrl: ImageUtils.thumbnailUrl(content['pic_url']), placeholder: (_, _) => const SizedBox.shrink(), ), diff --git a/lib/plugin/pl_player/view/view.dart b/lib/plugin/pl_player/view/view.dart index 1385bc48a..ad4031aaf 100644 --- a/lib/plugin/pl_player/view/view.dart +++ b/lib/plugin/pl_player/view/view.dart @@ -41,6 +41,7 @@ import 'package:PiliPlus/plugin/pl_player/widgets/play_pause_btn.dart'; import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:PiliPlus/utils/connectivity_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/image_utils.dart'; @@ -1652,7 +1653,7 @@ class _PLVideoPlayerState extends State Image.asset( Assets.buffering, height: 25, - cacheHeight: 25, + cacheHeight: 25.cacheSize, semanticLabel: "加载中", color: Colors.white, isPaused: false, diff --git a/lib/scripts/image_anim.patch b/lib/scripts/image_anim.patch index 35d2fa63e..5cf08438d 100644 --- a/lib/scripts/image_anim.patch +++ b/lib/scripts/image_anim.patch @@ -12,32 +12,32 @@ index 30429ea5e02..79f727ab472 100644 /// Creates a widget that displays an [ImageStream] obtained from the network. @@ -471,6 +472,7 @@ class Image extends StatefulWidget { Map? headers, - num? cacheWidth, - num? cacheHeight, + int? cacheWidth, + int? cacheHeight, + this.isPaused = true, WebHtmlElementStrategy webHtmlElementStrategy = WebHtmlElementStrategy.never, }) : image = ResizeImage.resizeIfNeeded( cacheWidth, @@ -540,6 +542,7 @@ class Image extends StatefulWidget { this.filterQuality = FilterQuality.medium, - num? cacheWidth, - num? cacheHeight, + int? cacheWidth, + int? cacheHeight, + this.isPaused = true, }) : // FileImage is not supported on Flutter Web therefore neither this method. assert( !kIsWeb, @@ -703,6 +706,7 @@ class Image extends StatefulWidget { this.filterQuality = FilterQuality.medium, - num? cacheWidth, - num? cacheHeight, + int? cacheWidth, + int? cacheHeight, + this.isPaused = true, }) : image = ResizeImage.resizeIfNeeded( cacheWidth, cacheHeight, @@ -765,6 +769,7 @@ class Image extends StatefulWidget { this.filterQuality = FilterQuality.medium, - num? cacheWidth, - num? cacheHeight, + int? cacheWidth, + int? cacheHeight, + this.isPaused = true, }) : image = ResizeImage.resizeIfNeeded( cacheWidth, diff --git a/lib/scripts/patch.ps1 b/lib/scripts/patch.ps1 index 5bf8e0bcc..8e6bc4d87 100644 --- a/lib/scripts/patch.ps1 +++ b/lib/scripts/patch.ps1 @@ -20,7 +20,7 @@ $LayoutBuilderPatch = "lib/scripts/layout_builder.patch" # https://github.com/flutter/flutter/issues/56239 # ref https://github.com/flutter/flutter/pull/184549 -$ImageCachePatch = "lib/scripts/image_cache.patch" +# $ImageCachePatch = "lib/scripts/image_cache.patch" $ImageAnimPatch = "lib/scripts/image_anim.patch" @@ -39,7 +39,7 @@ Set-Location $env:FLUTTER_ROOT $picks = @() $reverts = @() $patches = @($ModalBarrierPatch, $TextSelectionPatch, $MouseCursorPatch, - $NavigationBarPatch, $PaddingPatch, $ImageCachePatch, $ImageAnimPatch, + $NavigationBarPatch, $PaddingPatch, $ImageAnimPatch, $LayoutBuilderPatch, $ScaleGesturePatch) switch ($platform.ToLower()) { diff --git a/lib/utils/extension/num_ext.dart b/lib/utils/extension/num_ext.dart index fc2529814..d035ad93d 100644 --- a/lib/utils/extension/num_ext.dart +++ b/lib/utils/extension/num_ext.dart @@ -1,8 +1,20 @@ import 'dart:math' show pow; +import 'package:flutter/foundation.dart' show PlatformDispatcher; + const unitArr = ['B', 'K', 'M', 'G', 'T', 'P']; +final devicePixelRatio = + PlatformDispatcher.instance.views.first.devicePixelRatio; + extension NumExt on num { + int? get cacheSize { + if (this == 0) { + return null; + } + return (this * devicePixelRatio).round(); + } + String get formatSize { var value = this; int index = 0; diff --git a/pubspec.lock b/pubspec.lock index 33fe2750c..9affe8890 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -93,8 +93,8 @@ packages: dependency: "direct main" description: path: audio_service - ref: dev - resolved-ref: "2b1021f656579c871d2baa9100254b3e12b9428a" + ref: main + resolved-ref: "81cf56d5a8b8e9c8aa5a4c9396aebe094e09622f" url: "https://github.com/bggRGjQaUbCoE/audio_service.git" source: git version: "0.18.18" @@ -206,8 +206,8 @@ packages: dependency: "direct main" description: path: cached_network_image - ref: dev - resolved-ref: a7d0041a368b05144bd14b04a1306fd2aa5ab87f + ref: develop + resolved-ref: "5b79ff9f53a9a55b57d4d6fc52eb529fdfdb30d7" url: "https://github.com/bggRGjQaUbCoE/flutter_cached_network_image_ce.git" source: git version: "4.6.4" @@ -215,8 +215,8 @@ packages: dependency: transitive description: path: cached_network_image_platform_interface - ref: a7d0041a368b05144bd14b04a1306fd2aa5ab87f - resolved-ref: a7d0041a368b05144bd14b04a1306fd2aa5ab87f + ref: "5b79ff9f53a9a55b57d4d6fc52eb529fdfdb30d7" + resolved-ref: "5b79ff9f53a9a55b57d4d6fc52eb529fdfdb30d7" url: "https://github.com/bggRGjQaUbCoE/flutter_cached_network_image_ce.git" source: git version: "5.2.0" @@ -1203,11 +1203,10 @@ packages: octo_image: dependency: transitive description: - path: "." - ref: dev - resolved-ref: adb9eeec1fa6dc7becb58596f93715141190519d - url: "https://github.com/bggRGjQaUbCoE/octo_image.git" - source: git + name: octo_image + sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" + url: "https://pub.dev" + source: hosted version: "2.1.0" package_config: dependency: transitive diff --git a/pubspec.yaml b/pubspec.yaml index 5216018a0..c3c767107 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -41,7 +41,7 @@ dependencies: git: url: https://github.com/bggRGjQaUbCoE/audio_service.git path: audio_service - ref: dev + ref: main audio_session: ^0.2.2 battery_plus: ^7.0.0 brotli: ^0.6.0 @@ -49,7 +49,7 @@ dependencies: git: url: https://github.com/bggRGjQaUbCoE/flutter_cached_network_image_ce.git path: cached_network_image - ref: dev + ref: develop canvas_danmaku: git: url: https://github.com/bggRGjQaUbCoE/canvas_danmaku.git