From b8eb07517de8652100ff1431dee891f55110057a Mon Sep 17 00:00:00 2001 From: ErBW_s Date: Fri, 24 Jan 2025 11:37:45 +0800 Subject: [PATCH] hero transition for bangumi image --- lib/bean/card/bangumi_card.dart | 14 +++++-- lib/bean/card/bangumi_info_card.dart | 60 +++++++++++++++------------- 2 files changed, 42 insertions(+), 32 deletions(-) diff --git a/lib/bean/card/bangumi_card.dart b/lib/bean/card/bangumi_card.dart index ab4e456a..836f7a6a 100644 --- a/lib/bean/card/bangumi_card.dart +++ b/lib/bean/card/bangumi_card.dart @@ -65,10 +65,14 @@ class BangumiCardV extends StatelessWidget { child: LayoutBuilder(builder: (context, boxConstraints) { final double maxWidth = boxConstraints.maxWidth; final double maxHeight = boxConstraints.maxHeight; - return NetworkImgLayer( - src: bangumiItem.images['large'] ?? '', - width: maxWidth, - height: maxHeight, + return Hero( + transitionOnUserGestures: true, + tag: bangumiItem.id, + child: NetworkImgLayer( + src: bangumiItem.images['large'] ?? '', + width: maxWidth, + height: maxHeight, + ), ); }), ), @@ -84,7 +88,9 @@ class BangumiCardV extends StatelessWidget { class BangumiContent extends StatelessWidget { const BangumiContent({super.key, required this.bangumiItem}); + final BangumiItem bangumiItem; + @override Widget build(BuildContext context) { return Expanded( diff --git a/lib/bean/card/bangumi_info_card.dart b/lib/bean/card/bangumi_info_card.dart index b5fe0c64..ce9ef3ba 100644 --- a/lib/bean/card/bangumi_info_card.dart +++ b/lib/bean/card/bangumi_info_card.dart @@ -40,36 +40,40 @@ class _BangumiInfoCardVState extends State { child: LayoutBuilder(builder: (context, boxConstraints) { final double maxWidth = boxConstraints.maxWidth; final double maxHeight = boxConstraints.maxHeight; - return Stack( - children: [ - NetworkImgLayer( - src: widget.bangumiItem.images['large'] ?? '', - width: maxWidth, - height: maxHeight, - fadeInDuration: const Duration(milliseconds: 0), - fadeOutDuration: const Duration(milliseconds: 0), - ), - Positioned( - right: 5, - bottom: 5, - child: Container( - width: 40, - height: 40, - decoration: BoxDecoration( - color: Theme.of(context) - .colorScheme - .secondaryContainer, - shape: BoxShape.circle, - ), - child: CollectButton( - bangumiItem: widget.bangumiItem, - color: Theme.of(context) - .colorScheme - .onSecondaryContainer, + return Hero( + transitionOnUserGestures: true, + tag: widget.bangumiItem.id, + child: Stack( + children: [ + NetworkImgLayer( + src: widget.bangumiItem.images['large'] ?? '', + width: maxWidth, + height: maxHeight, + fadeInDuration: const Duration(milliseconds: 0), + fadeOutDuration: const Duration(milliseconds: 0), + ), + Positioned( + right: 5, + bottom: 5, + child: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + color: Theme.of(context) + .colorScheme + .secondaryContainer, + shape: BoxShape.circle, + ), + child: CollectButton( + bangumiItem: widget.bangumiItem, + color: Theme.of(context) + .colorScheme + .onSecondaryContainer, + ), ), ), - ), - ], + ], + ), ); }), ),