filter chip decoration pin animation

This commit is contained in:
Thibault Deckers 2020-11-23 11:48:30 +09:00
parent 272916eaa6
commit ad2d9b3552
3 changed files with 28 additions and 9 deletions

View file

@ -15,6 +15,9 @@ class Durations {
static const appBarTitleAnimation = Duration(milliseconds: 300); static const appBarTitleAnimation = Duration(milliseconds: 300);
static const appBarActionChangeAnimation = Duration(milliseconds: 200); static const appBarActionChangeAnimation = Duration(milliseconds: 200);
// filter grids animations
static const chipDecorationAnimation = Duration(milliseconds: 200);
// collection animations // collection animations
static const filterBarRemovalAnimation = Duration(milliseconds: 400); static const filterBarRemovalAnimation = Duration(milliseconds: 400);
static const collectionOpOverlayAnimation = Duration(milliseconds: 300); static const collectionOpOverlayAnimation = Duration(milliseconds: 300);

View file

@ -111,7 +111,7 @@ class _AvesFilterChipState extends State<AvesFilterChip> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
content, content,
Flexible(child: widget.details), widget.details,
], ],
); );
} }

View file

@ -6,6 +6,7 @@ import 'package:aves/model/image_entry.dart';
import 'package:aves/model/source/collection_source.dart'; import 'package:aves/model/source/collection_source.dart';
import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/utils/android_file_utils.dart';
import 'package:aves/utils/constants.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/raster.dart';
import 'package:aves/widgets/collection/thumbnail/vector.dart'; import 'package:aves/widgets/collection/thumbnail/vector.dart';
import 'package:aves/widgets/common/aves_filter_chip.dart'; import 'package:aves/widgets/common/aves_filter_chip.dart';
@ -63,8 +64,21 @@ class DecoratedFilterChip extends StatelessWidget {
return Row( return Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
if (pinned) AnimatedSwitcher(
Padding( 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), padding: EdgeInsets.only(right: 8),
child: DecoratedIcon( child: DecoratedIcon(
AIcons.pin, AIcons.pin,
@ -72,6 +86,8 @@ class DecoratedFilterChip extends StatelessWidget {
shadows: [Constants.embossShadow], shadows: [Constants.embossShadow],
size: 16, size: 16,
), ),
)
: SizedBox.shrink(),
), ),
if (filter is AlbumFilter && androidFileUtils.isOnRemovableStorage(filter.album)) if (filter is AlbumFilter && androidFileUtils.isOnRemovableStorage(filter.album))
Padding( Padding(