Implementation
List<Effect> get effects {
switch (this) {
case TapEffect.scale:
return [
ScaleEffect(
begin: const Offset(1, 1),
end: const Offset(0.95, 0.95),
duration: 120.ms,
curve: Curves.easeInOut,
),
];
case TapEffect.fade:
return [
FadeEffect(
begin: 1.0,
end: 0.4,
duration: 120.ms,
curve: Curves.easeInOut,
),
];
case TapEffect.scaleFade:
return [
ScaleEffect(
begin: const Offset(1, 1),
end: const Offset(0.95, 0.95),
duration: 120.ms,
curve: Curves.easeInOut,
),
FadeEffect(
begin: 1.0,
end: 0.4,
duration: 120.ms,
),
];
case TapEffect.bounce:
return [
ScaleEffect(
begin: const Offset(1, 1),
end: const Offset(1.15, 1.15),
duration: 100.ms,
curve: Curves.easeOut,
),
];
case TapEffect.elastic:
return [
ScaleEffect(
begin: const Offset(1, 1),
end: const Offset(0.9, 0.9),
duration: 200.ms,
curve: Curves.elasticInOut,
),
];
case TapEffect.pushDown:
return [
SlideEffect(
begin: Offset.zero,
end: const Offset(0, 0.05),
duration: 120.ms,
curve: Curves.easeOut,
),
];
case TapEffect.tilt:
return [
RotateEffect(
begin: 0.0,
end: 0.05,
duration: 120.ms,
curve: Curves.easeInOut,
alignment: Alignment.bottomCenter,
),
];
case TapEffect.shake:
return [
MoveEffect(
begin: const Offset(-4, 0),
end: const Offset(4, 0),
duration: 60.ms,
curve: Curves.easeInOut,
),
MoveEffect(
begin: const Offset(4, 0),
end: const Offset(-2, 0),
duration: 60.ms,
curve: Curves.easeInOut,
),
MoveEffect(
begin: const Offset(-2, 0),
end: Offset.zero,
duration: 60.ms,
curve: Curves.easeInOut,
),
];
case TapEffect.flip:
return [
RotateEffect(
begin: 0.0,
end: 3.14,
duration: 300.ms,
curve: Curves.easeInOut,
alignment: Alignment.center,
),
];
case TapEffect.pulse:
return [
ScaleEffect(
begin: const Offset(1, 1),
end: const Offset(1.1, 1.1),
duration: 150.ms,
curve: Curves.easeOut,
),
];
case TapEffect.zoomOut:
return [
ScaleEffect(
begin: const Offset(1.0, 1.0),
end: const Offset(0.8, 0.8),
duration: 120.ms,
curve: Curves.easeInOut,
),
];
case TapEffect.swing:
return [
RotateEffect(
begin: -0.05,
end: 0.05,
duration: 80.ms,
curve: Curves.easeInOut,
alignment: Alignment.topCenter,
),
RotateEffect(
begin: 0.05,
end: -0.03,
duration: 80.ms,
curve: Curves.easeInOut,
alignment: Alignment.topCenter,
),
RotateEffect(
begin: -0.03,
end: 0.0,
duration: 60.ms,
curve: Curves.easeInOut,
alignment: Alignment.topCenter,
),
];
case TapEffect.jelly:
return [
ScaleEffect(
begin: const Offset(1.0, 1.0),
end: const Offset(1.2, 0.8),
duration: 80.ms,
curve: Curves.easeIn,
),
ScaleEffect(
begin: const Offset(1.2, 0.8),
end: const Offset(0.9, 1.1),
duration: 80.ms,
curve: Curves.easeOut,
),
ScaleEffect(
begin: const Offset(0.9, 1.1),
end: const Offset(1.0, 1.0),
duration: 80.ms,
curve: Curves.easeInOut,
),
];
case TapEffect.hoverLift:
return [
MoveEffect(
begin: const Offset(0, 0),
end: const Offset(0, -5),
duration: 120.ms,
curve: Curves.easeOut,
),
ScaleEffect(
begin: const Offset(1, 1),
end: const Offset(1.05, 1.05),
duration: 120.ms,
curve: Curves.easeOut,
),
];
case TapEffect.pop:
return [
ScaleEffect(
begin: const Offset(1.0, 1.0),
end: const Offset(1.2, 1.2),
duration: 70.ms,
curve: Curves.easeOut,
),
ScaleEffect(
begin: const Offset(1.2, 1.2),
end: const Offset(0.95, 0.95),
duration: 70.ms,
curve: Curves.easeInOut,
),
ScaleEffect(
begin: const Offset(0.95, 0.95),
end: const Offset(1.0, 1.0),
duration: 70.ms,
curve: Curves.easeOut,
),
];
case TapEffect.wiggle:
return [
RotateEffect(
begin: -0.04,
end: 0.04,
duration: 50.ms,
curve: Curves.easeInOut,
),
RotateEffect(
begin: 0.04,
end: -0.04,
duration: 50.ms,
curve: Curves.easeInOut,
),
RotateEffect(
begin: -0.02,
end: 0.0,
duration: 50.ms,
curve: Curves.easeInOut,
),
];
case TapEffect.blur:
return [
FadeEffect(
begin: 1.0,
end: 0.5,
duration: 100.ms,
curve: Curves.easeInOut,
),
ScaleEffect(
begin: const Offset(1.0, 1.0),
end: const Offset(1.1, 1.1),
duration: 100.ms,
curve: Curves.easeOut,
),
];
case TapEffect.glow:
return [
ScaleEffect(
begin: const Offset(1.0, 1.0),
end: const Offset(1.05, 1.05),
duration: 100.ms,
curve: Curves.easeOut,
),
FadeEffect(
begin: 0.9,
end: 1.0,
duration: 100.ms,
curve: Curves.easeOut,
),
];
case TapEffect.swirl:
return [
RotateEffect(
begin: 0.0,
end: 0.3,
duration: 120.ms,
curve: Curves.easeInOut,
alignment: Alignment.center,
),
ScaleEffect(
begin: const Offset(1.0, 1.0),
end: const Offset(1.1, 1.1),
duration: 120.ms,
curve: Curves.easeOut,
),
];
case TapEffect.rubberBand:
return [
ScaleEffect(
begin: const Offset(1.0, 1.0),
end: const Offset(1.25, 0.75),
duration: 100.ms,
curve: Curves.easeIn,
),
ScaleEffect(
begin: const Offset(1.25, 0.75),
end: const Offset(0.75, 1.25),
duration: 100.ms,
curve: Curves.easeOut,
),
ScaleEffect(
begin: const Offset(0.75, 1.25),
end: const Offset(1.15, 0.85),
duration: 100.ms,
curve: Curves.easeInOut,
),
ScaleEffect(
begin: const Offset(1.15, 0.85),
end: const Offset(1.0, 1.0),
duration: 100.ms,
curve: Curves.easeInOut,
),
];
case TapEffect.dropBounce:
return [
MoveEffect(
begin: const Offset(0, -20),
end: const Offset(0, 30),
duration: 140.ms,
curve: Curves.easeIn,
),
MoveEffect(
begin: const Offset(0, 30),
end: Offset.zero,
duration: 200.ms,
curve: Curves.bounceOut,
),
];
case TapEffect.wobble:
return [
MoveEffect(
begin: const Offset(-0.05, 0),
end: const Offset(0.05, 0),
duration: 80.ms,
curve: Curves.easeInOut,
),
RotateEffect(
begin: -0.05,
end: 0.05,
duration: 80.ms,
curve: Curves.easeInOut,
alignment: Alignment.center,
),
MoveEffect(
begin: const Offset(0.05, 0),
end: Offset.zero,
duration: 80.ms,
curve: Curves.easeInOut,
),
RotateEffect(
begin: 0.05,
end: 0.0,
duration: 80.ms,
curve: Curves.easeInOut,
alignment: Alignment.center,
),
];
case TapEffect.breathe:
return [
ScaleEffect(
begin: const Offset(0.95, 0.95),
end: const Offset(1.08, 1.08),
duration: 300.ms,
curve: Curves.easeInOut,
),
ScaleEffect(
begin: const Offset(0.95, 0.95),
end: const Offset(1.0, 1.0),
duration: 300.ms,
curve: Curves.easeInOut,
),
];
case TapEffect.flipX:
return [
RotateEffect(
begin: 0,
end: 3.14,
duration: 300.ms,
curve: Curves.easeInOut,
alignment: Alignment.centerLeft,
),
];
case TapEffect.flipY:
return [
RotateEffect(
begin: 0,
end: 3.14,
duration: 300.ms,
curve: Curves.easeInOut,
alignment: Alignment.topCenter,
),
];
case TapEffect.rotateIn:
return [
RotateEffect(
begin: -0.5,
end: 0.0,
duration: 200.ms,
curve: Curves.easeOut,
alignment: Alignment.center,
),
];
case TapEffect.shakeY:
return [
MoveEffect(
begin: const Offset(0, -4),
end: const Offset(0, 4),
duration: 60.ms,
curve: Curves.easeInOut,
),
MoveEffect(
begin: const Offset(0, 4),
end: const Offset(0, -2),
duration: 60.ms,
curve: Curves.easeInOut,
),
MoveEffect(
begin: const Offset(0, -2),
end: Offset.zero,
duration: 60.ms,
curve: Curves.easeInOut,
),
];
case TapEffect.none:
return [];
}
}