diff --git a/lib/utils/durations.dart b/lib/utils/durations.dart index 4c794da88..0481bf563 100644 --- a/lib/utils/durations.dart +++ b/lib/utils/durations.dart @@ -15,6 +15,9 @@ class Durations { static const appBarTitleAnimation = Duration(milliseconds: 300); static const appBarActionChangeAnimation = Duration(milliseconds: 200); + // filter grids animations + static const chipDecorationAnimation = Duration(milliseconds: 200); + // collection animations static const filterBarRemovalAnimation = Duration(milliseconds: 400); static const collectionOpOverlayAnimation = Duration(milliseconds: 300); diff --git a/lib/widgets/common/aves_filter_chip.dart b/lib/widgets/common/aves_filter_chip.dart index 314a2a38b..89b40b0d6 100644 --- a/lib/widgets/common/aves_filter_chip.dart +++ b/lib/widgets/common/aves_filter_chip.dart @@ -111,7 +111,7 @@ class _AvesFilterChipState extends State { mainAxisSize: MainAxisSize.min, children: [ content, - Flexible(child: widget.details), + widget.details, ], ); } diff --git a/lib/widgets/filter_grids/common/decorated_filter_chip.dart b/lib/widgets/filter_grids/common/decorated_filter_chip.dart index 9bfb5b714..541949993 100644 --- a/lib/widgets/filter_grids/common/decorated_filter_chip.dart +++ b/lib/widgets/filter_grids/common/decorated_filter_chip.dart @@ -6,6 +6,7 @@ import 'package:aves/model/image_entry.dart'; import 'package:aves/model/source/collection_source.dart'; import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/utils/constants.dart'; +import 'package:aves/utils/durations.dart'; import 'package:aves/widgets/collection/thumbnail/raster.dart'; import 'package:aves/widgets/collection/thumbnail/vector.dart'; import 'package:aves/widgets/common/aves_filter_chip.dart'; @@ -63,16 +64,31 @@ class DecoratedFilterChip extends StatelessWidget { return Row( mainAxisSize: MainAxisSize.min, children: [ - if (pinned) - Padding( - padding: EdgeInsets.only(right: 8), - child: DecoratedIcon( - AIcons.pin, - color: FilterGridPage.detailColor, - shadows: [Constants.embossShadow], - size: 16, + AnimatedSwitcher( + duration: Durations.chipDecorationAnimation, + switchInCurve: Curves.easeInOutCubic, + switchOutCurve: Curves.easeInOutCubic, + transitionBuilder: (child, animation) => FadeTransition( + opacity: animation, + child: SizeTransition( + axis: Axis.horizontal, + sizeFactor: animation, + axisAlignment: 1.0, + child: child, ), ), + child: pinned + ? Padding( + padding: EdgeInsets.only(right: 8), + child: DecoratedIcon( + AIcons.pin, + color: FilterGridPage.detailColor, + shadows: [Constants.embossShadow], + size: 16, + ), + ) + : SizedBox.shrink(), + ), if (filter is AlbumFilter && androidFileUtils.isOnRemovableStorage(filter.album)) Padding( padding: EdgeInsets.only(right: 8),