Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions lib/views/nfts/common/widgets/nft_image.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class NftImage extends StatelessWidget {
switch (type) {
case NftImageType.image:
return _NftImageWithFallback(
key: ValueKey(imageUrl!),
imageUrl: imageUrl!,
);
case NftImageType.video:
Expand All @@ -36,6 +37,7 @@ class NftImage extends StatelessWidget {
return PlatformTuner.isNativeDesktop
? const _NftPlaceholder()
: _NftVideoWithFallback(
key: ValueKey(imageUrl!),
videoUrl: imageUrl!,
);
case NftImageType.placeholder:
Expand Down Expand Up @@ -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<NftImageBloc>();
bloc.add(const NftImageResetRequested());
bloc.add(NftImageLoadRequested(imageUrl: widget.imageUrl));
}
}

@override
Widget build(BuildContext context) {
return BlocBuilder<NftImageBloc, NftImageState>(
Expand Down Expand Up @@ -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<NftImageBloc>();
bloc.add(const NftImageResetRequested());
bloc.add(NftImageLoadRequested(imageUrl: widget.videoUrl));
}
}

@override
Widget build(BuildContext context) {
return BlocConsumer<NftImageBloc, NftImageState>(
Expand Down
Loading