filter chip decoration pin animation
This commit is contained in:
parent
272916eaa6
commit
ad2d9b3552
3 changed files with 28 additions and 9 deletions
|
@ -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);
|
||||||
|
|
|
@ -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,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,16 +64,31 @@ class DecoratedFilterChip extends StatelessWidget {
|
||||||
return Row(
|
return Row(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
if (pinned)
|
AnimatedSwitcher(
|
||||||
Padding(
|
duration: Durations.chipDecorationAnimation,
|
||||||
padding: EdgeInsets.only(right: 8),
|
switchInCurve: Curves.easeInOutCubic,
|
||||||
child: DecoratedIcon(
|
switchOutCurve: Curves.easeInOutCubic,
|
||||||
AIcons.pin,
|
transitionBuilder: (child, animation) => FadeTransition(
|
||||||
color: FilterGridPage.detailColor,
|
opacity: animation,
|
||||||
shadows: [Constants.embossShadow],
|
child: SizeTransition(
|
||||||
size: 16,
|
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))
|
if (filter is AlbumFilter && androidFileUtils.isOnRemovableStorage(filter.album))
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.only(right: 8),
|
padding: EdgeInsets.only(right: 8),
|
||||||
|
|
Loading…
Reference in a new issue