From c294343f076df52942cee4f651a80c11e335ec52 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sat, 3 Jul 2021 11:59:02 +0900 Subject: [PATCH] collection: error thumbnail hero animation --- lib/widgets/collection/thumbnail/image.dart | 28 +++++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/lib/widgets/collection/thumbnail/image.dart b/lib/widgets/collection/thumbnail/image.dart index e0da142a4..3356e283f 100644 --- a/lib/widgets/collection/thumbnail/image.dart +++ b/lib/widgets/collection/thumbnail/image.dart @@ -12,6 +12,7 @@ import 'package:aves/widgets/collection/thumbnail/error.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/fx/checkered_decoration.dart'; import 'package:aves/widgets/common/fx/transition_image.dart'; +import 'package:aves/widgets/common/providers/media_query_data_provider.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -243,11 +244,28 @@ class _ThumbnailImageState extends State { : image; } - Widget _buildError(BuildContext context, Object error, StackTrace? stackTrace) => ErrorThumbnail( - entry: entry, - extent: extent, - tooltip: error.toString(), - ); + Widget _buildError(BuildContext context, Object error, StackTrace? stackTrace) { + final child = ErrorThumbnail( + entry: entry, + extent: extent, + tooltip: error.toString(), + ); + return widget.heroTag != null + ? Hero( + tag: widget.heroTag!, + flightShuttleBuilder: (flight, animation, direction, fromHero, toHero) { + return MediaQueryDataProvider( + child: DefaultTextStyle( + style: DefaultTextStyle.of(toHero).style, + child: toHero.widget, + ), + ); + }, + transitionOnUserGestures: true, + child: child, + ) + : child; + } // when the entry image itself changed (e.g. after rotation) void _onImageChanged() async {