ButtonAnimationStyle class

ButtonAnimationStyle defines composable animation styles for buttons. Use factory constructors to create different animation effects.

Constructors

ButtonAnimationStyle.bounce({Duration duration = const Duration(milliseconds: 150), Curve curve = Curves.easeOutBack, bool enableHapticFeedback = true, double scaleMin = 0.92})
Scale down on press, spring back on release Best for add to cart, like buttons
factory
ButtonAnimationStyle.clickable({Duration duration = const Duration(milliseconds: 100), Curve curve = Curves.easeInOut, bool enableHapticFeedback = true, double translateY = 4.0, double shadowOffset = 4.0})
Duolingo-style 3D press effect with translateY and shadow Best for primary actions and game-like UX
factory
ButtonAnimationStyle.jelly({Duration duration = const Duration(milliseconds: 300), Curve curve = Curves.elasticOut, bool enableHapticFeedback = true, double jellyStrength = 0.15})
Wobbly elastic deformation Best for fun/casual apps
factory
ButtonAnimationStyle.morph({Duration duration = const Duration(milliseconds: 150), Curve curve = Curves.easeInOut, bool enableHapticFeedback = false, double morphRadius = 24.0})
Border radius increases on press Best for subtle feedback
factory
ButtonAnimationStyle.none()
No animation (default behavior, backwards compatible)
const
ButtonAnimationStyle.pulse({Duration duration = const Duration(milliseconds: 800), Curve curve = Curves.easeInOut, bool enableHapticFeedback = false, double pulseScale = 1.05})
Subtle continuous scale pulse while pressed Best for long-press actions
factory
ButtonAnimationStyle.ripple({Duration duration = const Duration(milliseconds: 400), Curve curve = Curves.easeOut, bool enableHapticFeedback = true, double rippleScale = 2.0})
Enhanced ripple from press point Best for material design emphasis
factory
ButtonAnimationStyle.shake({Duration duration = const Duration(milliseconds: 400), Curve curve = Curves.easeInOut, bool enableHapticFeedback = true, double shakeOffset = 8.0, int shakeCount = 3})
Horizontal shake (programmatic trigger) Best for error states
factory
ButtonAnimationStyle.shine({Duration duration = const Duration(milliseconds: 600), Curve curve = Curves.easeInOut, bool enableHapticFeedback = false, Color shineColor = Colors.white, double shineWidth = 0.3})
Glossy highlight sweep across button Best for premium features
factory
ButtonAnimationStyle.squeeze({Duration duration = const Duration(milliseconds: 120), Curve curve = Curves.easeInOut, bool enableHapticFeedback = true, double squeezeX = 0.95, double squeezeY = 1.05})
Horizontal compress, vertical expand Best for playful interactions
factory

Properties

curve → Curve
final
duration → Duration
final
enableHapticFeedback → bool
final
hashCode → int
The hash code for this object.
no setterinherited
jellyStrength → double?
final
morphRadius → double?
final
pulseScale → double?
final
rippleScale → double?
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
scaleMax → double?
final
scaleMin → double?
final
shadowOffset → double?
final
shakeCount → int?
final
shakeOffset → double?
final
shineColor → Color?
final
shineWidth → double?
final
squeezeX → double?
final
squeezeY → double?
final
translateY → double?
final
type → ButtonAnimationType
final

Methods

copyWith({ButtonAnimationType? type, Duration? duration, Curve? curve, bool? enableHapticFeedback, double? translateY, double? shadowOffset, double? scaleMin, double? scaleMax, double? pulseScale, double? squeezeX, double? squeezeY, double? jellyStrength, Color? shineColor, double? shineWidth, double? rippleScale, double? morphRadius, double? shakeOffset, int? shakeCount}) → ButtonAnimationStyle
Create a copy of this style with overridden properties
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited