Prebuilt animation primitives with timeline sequencing and spring physics
dart pub add philiprehberger_animation_kitPrebuilt animation primitives with timeline sequencing and spring physics
Add to your pubspec.yaml:
dependencies:
philiprehberger_animation_kit: ^0.4.0
Then run:
flutter pub get
import 'package:philiprehberger_animation_kit/animation_kit.dart';
FadeIn(
duration: Duration(milliseconds: 500),
child: Text('Hello, World!'),
)
SlideIn.fromRight(child: Text('From right'))
SlideIn.fromBottom(
duration: Duration(milliseconds: 500),
child: Text('From bottom'),
)
ScaleIn(
curve: Curves.easeOutBack,
child: Icon(Icons.star, size: 48),
)
Bounce(
duration: Duration(milliseconds: 800),
child: Text('Boing!'),
)
Shake(
magnitude: 12.0,
oscillations: 4,
child: Text('Error!', style: TextStyle(color: Colors.red)),
)
Pulse(
minScale: 0.9,
maxScale: 1.1,
child: Icon(Icons.favorite, color: Colors.red, size: 48),
)
FadeIn(
reverse: true,
onComplete: () => print('Done!'),
child: Text('Fading out'),
)
FadeIn(
onStatusChanged: (status) => print('Status: $status'),
child: Text('Tracked'),
)
import 'package:philiprehberger_animation_kit/animation_kit.dart';
ScaleIn(
curve: KitCurves.softSpring,
child: Icon(Icons.check_circle, size: 48),
)
SlideIn.fromBottom(
curve: KitCurves.gentleEntry,
child: Card(child: Text('Card')),
)
AnimationChain(
stepDuration: Duration(milliseconds: 400),
children: [
Text('Step 1'),
Text('Step 2'),
Text('Step 3'),
],
)
RepeatAnimation(
count: 3,
reverse: true,
child: Icon(Icons.notifications, size: 32),
)
AnimatedVisibility(
visible: _isVisible,
duration: Duration(milliseconds: 300),
child: Text('Now you see me'),
)
AnimationSequence(
staggerDelay: Duration(milliseconds: 150),
children: [
Text('First'),
Text('Second'),
Text('Third'),
],
)
AnimationDelay(
delay: Duration(milliseconds: 500),
duration: Duration(milliseconds: 300),
child: Text('Appears after 500ms'),
)
SpringWidget(
target: Offset(100.0, 50.0),
stiffness: 300.0,
damping: 15.0,
child: Container(
width: 60,
height: 60,
decoration: BoxDecoration(
color: Colors.green,
shape: BoxShape.circle,
),
),
)
| Widget | Description |
|---|---|
FadeIn | Fade in a child widget with configurable duration, curve, and delay |
SlideIn | Slide in from a direction (left, right, top, bottom) |
ScaleIn | Scale from 0 to 1 with configurable curve |
Bounce | Scale with elastic overshoot (Curves.elasticOut) |
Shake | Horizontal shake using sine-based offset with decay |
Pulse | Repeating scale animation (grows and shrinks) |
AnimationChain | Sequential multi-child animations with fade and slide |
RepeatAnimation | Looping opacity animation with optional repeat count |
AnimatedVisibility | Boolean-driven fade in/out with layout removal |
AnimationDelay | Delays child appearance then fades in with configurable duration |
AnimationSequence | Staggered reveal of child widgets in sequence |
SpringWidget | Spring physics positioning with configurable stiffness and damping |
KitCurves | Preset Curve constants: gentleEntry, elasticBounce, smoothExit, softSpring |
onStatusChanged (param) | Optional void Function(AnimationStatus)? on FadeIn, SlideIn, ScaleIn for fine-grained status updates |
flutter pub get
flutter analyze
flutter test
If you find this project useful: