From 8a8aa6c1e0a4e87a0cccc0dd36d073877b83d99c Mon Sep 17 00:00:00 2001 From: dom Date: Mon, 16 Mar 2026 15:19:30 +0800 Subject: [PATCH] unique image tag Signed-off-by: dom --- lib/common/widgets/image_grid/image_grid_view.dart | 3 ++- lib/common/widgets/image_viewer/gallery_viewer.dart | 4 +++- lib/pages/dynamics/widgets/content_panel.dart | 2 +- lib/pages/member/widget/user_info_card.dart | 3 ++- lib/utils/page_utils.dart | 2 ++ 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/common/widgets/image_grid/image_grid_view.dart b/lib/common/widgets/image_grid/image_grid_view.dart index e7df76322..630ede337 100644 --- a/lib/common/widgets/image_grid/image_grid_view.dart +++ b/lib/common/widgets/image_grid/image_grid_view.dart @@ -108,6 +108,7 @@ class ImageGridView extends StatelessWidget { PageUtils.imageView( initialPage: index, imgList: imgList, + tag: hashCode.toString(), ); } @@ -255,7 +256,7 @@ class ImageGridView extends StatelessWidget { ); if (!item.isLongPic) { child = Hero( - tag: item.url, + tag: '${item.url}$hashCode', child: child, ); } diff --git a/lib/common/widgets/image_viewer/gallery_viewer.dart b/lib/common/widgets/image_viewer/gallery_viewer.dart index 9bc185c67..be8479eda 100644 --- a/lib/common/widgets/image_viewer/gallery_viewer.dart +++ b/lib/common/widgets/image_viewer/gallery_viewer.dart @@ -55,6 +55,7 @@ class GalleryViewer extends StatefulWidget { required this.sources, this.initIndex = 0, this.onPageChanged, + this.tag = '', }); final double minScale; @@ -63,6 +64,7 @@ class GalleryViewer extends StatefulWidget { final List sources; final int initIndex; final ValueChanged? onPageChanged; + final String tag; @override State createState() => _GalleryViewerState(); @@ -472,7 +474,7 @@ class _GalleryViewerState extends State : const SizedBox.shrink(), ); } - return Hero(tag: item.url, child: child); + return Hero(tag: '${item.url}${widget.tag}', child: child); } void _onTap() { diff --git a/lib/pages/dynamics/widgets/content_panel.dart b/lib/pages/dynamics/widgets/content_panel.dart index b794d66c6..2a7ea0547 100644 --- a/lib/pages/dynamics/widgets/content_panel.dart +++ b/lib/pages/dynamics/widgets/content_panel.dart @@ -90,6 +90,7 @@ Widget content( ), if (pics != null && pics.isNotEmpty) ImageGridView( + fullScreen: true, picArr: pics .map( (item) => ImageModel( @@ -100,7 +101,6 @@ Widget content( ), ) .toList(), - fullScreen: true, ), ], ), diff --git a/lib/pages/member/widget/user_info_card.dart b/lib/pages/member/widget/user_info_card.dart index fcd3b7297..83a57d42c 100644 --- a/lib/pages/member/widget/user_info_card.dart +++ b/lib/pages/member/widget/user_info_card.dart @@ -429,7 +429,7 @@ class UserInfoCard extends StatelessWidget { ); Widget _buildAvatar(bool hasPendant) => fromHero( - tag: card.face ?? '', + tag: '${card.face}$hashCode', child: PendantAvatar( avatar: card.face, size: hasPendant ? kPendantAvatarSize : kAvatarSize, @@ -440,6 +440,7 @@ class UserInfoCard extends StatelessWidget { garbPendantImage: card.pendant?.image, roomId: live?.liveStatus == 1 ? live!.roomid : null, onTap: () => PageUtils.imageView( + tag: hashCode.toString(), imgList: [SourceModel(url: card.face.http2https)], ), ), diff --git a/lib/utils/page_utils.dart b/lib/utils/page_utils.dart index fe7b774d1..79649c71e 100644 --- a/lib/utils/page_utils.dart +++ b/lib/utils/page_utils.dart @@ -49,6 +49,7 @@ abstract final class PageUtils { required List imgList, int? quality, ValueChanged? onPageChanged, + String tag = '', }) { return Get.key.currentState!.push( HeroDialogRoute( @@ -57,6 +58,7 @@ abstract final class PageUtils { initIndex: initialPage, quality: quality ?? GlobalData().imgQuality, onPageChanged: onPageChanged, + tag: tag, ), ), );