diff --git a/lib/views/nfts/common/widgets/nft_image.dart b/lib/views/nfts/common/widgets/nft_image.dart index 89de24bf9f..0d6f469267 100644 --- a/lib/views/nfts/common/widgets/nft_image.dart +++ b/lib/views/nfts/common/widgets/nft_image.dart @@ -27,6 +27,7 @@ class NftImage extends StatelessWidget { switch (type) { case NftImageType.image: return _NftImageWithFallback( + key: ValueKey(imageUrl!), imageUrl: imageUrl!, ); case NftImageType.video: @@ -36,6 +37,7 @@ class NftImage extends StatelessWidget { return PlatformTuner.isNativeDesktop ? const _NftPlaceholder() : _NftVideoWithFallback( + key: ValueKey(imageUrl!), videoUrl: imageUrl!, ); case NftImageType.placeholder: @@ -84,6 +86,16 @@ class _NftImageWithFallbackState extends State<_NftImageWithFallback> { }); } + @override + void didUpdateWidget(covariant _NftImageWithFallback oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.imageUrl != widget.imageUrl) { + final bloc = context.read(); + bloc.add(const NftImageResetRequested()); + bloc.add(NftImageLoadRequested(imageUrl: widget.imageUrl)); + } + } + @override Widget build(BuildContext context) { return BlocBuilder( @@ -201,6 +213,19 @@ class _NftVideoWithFallbackState extends State<_NftVideoWithFallback> { }); } + @override + void didUpdateWidget(covariant _NftVideoWithFallback oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.videoUrl != widget.videoUrl) { + _controller?.dispose(); + _controller = null; + currentVideoUrl = null; + final bloc = context.read(); + bloc.add(const NftImageResetRequested()); + bloc.add(NftImageLoadRequested(imageUrl: widget.videoUrl)); + } + } + @override Widget build(BuildContext context) { return BlocConsumer(