From 11cbd6512d4407a5e22e161bcddc9875af86f7ce Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Wed, 29 Apr 2020 10:52:51 +0900 Subject: [PATCH] selection: darker overlay for selected items --- lib/widgets/album/thumbnail/decorated.dart | 10 ++----- lib/widgets/album/thumbnail/overlay.dart | 32 ++++++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/lib/widgets/album/thumbnail/decorated.dart b/lib/widgets/album/thumbnail/decorated.dart index a4731bcfc..0ce1ff0e1 100644 --- a/lib/widgets/album/thumbnail/decorated.dart +++ b/lib/widgets/album/thumbnail/decorated.dart @@ -55,13 +55,9 @@ class DecoratedThumbnail extends StatelessWidget { ), ), if (showOverlay) - Positioned( - top: 0, - right: 0, - child: ThumbnailSelectionOverlay( - entry: entry, - extent: extent, - ), + ThumbnailSelectionOverlay( + entry: entry, + extent: extent, ), ], ), diff --git a/lib/widgets/album/thumbnail/overlay.dart b/lib/widgets/album/thumbnail/overlay.dart index 60776356e..89c3275c0 100644 --- a/lib/widgets/album/thumbnail/overlay.dart +++ b/lib/widgets/album/thumbnail/overlay.dart @@ -56,6 +56,7 @@ class ThumbnailSelectionOverlay extends StatelessWidget { @override Widget build(BuildContext context) { + final duration = Duration(milliseconds: (200 * timeDilation).toInt()); final fontSize = min(14.0, (extent / 8)).roundToDouble(); final iconSize = fontSize * 2; final collection = Provider.of(context); @@ -67,13 +68,15 @@ class ThumbnailSelectionOverlay extends StatelessWidget { animation: collection.selectionChangeNotifier, builder: (context, child) { final selected = collection.isSelected([entry]); - final child = OverlayIcon( - key: ValueKey(selected), - icon: selected ? AIcons.selected : AIcons.unselected, - size: iconSize, - ); - return AnimatedSwitcher( - duration: Duration(milliseconds: (300 * timeDilation).toInt()), + var child = collection.isSelecting + ? OverlayIcon( + key: ValueKey(selected), + icon: selected ? AIcons.selected : AIcons.unselected, + size: iconSize, + ) + : const SizedBox.shrink(); + child = AnimatedSwitcher( + duration: duration, switchInCurve: Curves.easeOutBack, switchOutCurve: Curves.easeOutBack, transitionBuilder: (child, animation) => ScaleTransition( @@ -82,17 +85,18 @@ class ThumbnailSelectionOverlay extends StatelessWidget { ), child: child, ); + child = AnimatedContainer( + duration: duration, + alignment: Alignment.topRight, + color: selected ? Colors.black54 : Colors.transparent, + child: child, + ); + return child; }, ) : const SizedBox.shrink(); return AnimatedSwitcher( - duration: Duration(milliseconds: (300 * timeDilation).toInt()), - switchInCurve: Curves.easeOutBack, - switchOutCurve: Curves.easeOutBack, - transitionBuilder: (child, animation) => ScaleTransition( - child: child, - scale: animation, - ), + duration: duration, child: child, ); },