voo_motion 0.0.2 copy "voo_motion: ^0.0.2" to clipboard
voo_motion: ^0.0.2 copied to clipboard

Simple and powerful animation package with extension methods for Flutter widgets

VooMotion #

A simple and powerful animation package for Flutter that makes adding beautiful animations to any widget as easy as calling a method.

Features #

  • Extension-based API: Apply animations to any widget using simple extension methods like .dropIn(), .fadeIn(), .slideInLeft()
  • Rich Animation Library: Pre-built animations including fade, slide, scale, rotation, bounce, shake, and flip
  • Highly Configurable: Fine-tune duration, delay, curves, and other parameters for each animation
  • Staggered Animations: Create beautiful staggered list animations with VooStaggerList
  • Performance Optimized: Efficient animation controllers with proper lifecycle management
  • Accessibility Support: Respects system accessibility settings for reduced motion
  • Design System Integration: Works seamlessly with VooDesignSystem

Installation #

Add voo_motion to your pubspec.yaml:

dependencies:
  voo_motion: ^0.0.1

Quick Start #

import 'package:voo_motion/voo_motion.dart';

// Simply add .dropIn() to any widget
Text('Hello World').dropIn()

// Customize animation parameters
ElevatedButton(
  onPressed: () {},
  child: Text('Click Me'),
).fadeIn(
  duration: Duration(milliseconds: 800),
  delay: Duration(milliseconds: 200),
)

// Chain multiple animations
Container(
  child: Text('Animated'),
).fadeIn().scaleIn(delay: Duration(milliseconds: 500))

Available Animations #

Drop In #

Widget drops from above with a bounce effect.

Card().dropIn(
  fromHeight: 100, // Drop distance
  duration: Duration(milliseconds: 600),
)

Fade #

Fade in or out animations.

// Fade in
Container().fadeIn(from: 0.0, to: 1.0)

// Fade out
Container().fadeOut(from: 1.0, to: 0.0)

Slide #

Slide from any direction.

Text('Slide').slideInLeft()
Text('Slide').slideInRight()
Text('Slide').slideInTop()
Text('Slide').slideInBottom()

Scale #

Scale animations with elastic effects.

Icon(Icons.star).scaleIn(
  from: 0.0,
  to: 1.0,
  curve: Curves.elasticOut,
)

Rotation #

Continuous rotation animations.

Icon(Icons.refresh).rotate(
  repeat: true,
  duration: Duration(seconds: 2),
)

Bounce #

Bouncing animation effect.

Container().bounce(
  bounceHeight: 20,
  numberOfBounces: 3,
  repeat: true,
)

Shake #

Shake animation for emphasis.

TextField().shake(
  intensity: 10,
  numberOfShakes: 5,
)

Flip #

3D flip animations.

Card().flipX() // Horizontal flip
Card().flipY() // Vertical flip

Staggered Animations #

Create beautiful staggered list animations:

VooStaggerList(
  animationType: StaggerAnimationType.slideLeft,
  staggerDelay: Duration(milliseconds: 100),
  children: [
    ListTile(title: Text('Item 1')),
    ListTile(title: Text('Item 2')),
    ListTile(title: Text('Item 3')),
  ],
)

Animation Configuration #

Fine-tune animations with VooAnimationConfig:

Container().fadeIn(
  config: VooAnimationConfig(
    duration: Duration(milliseconds: 500),
    delay: Duration(milliseconds: 200),
    curve: Curves.easeInOut,
    repeat: false,
    reverse: false,
    onStart: () => print('Animation started'),
    onComplete: () => print('Animation completed'),
  ),
)

Custom Animation Curves #

Use predefined curves or create custom ones:

// Predefined curves
Container().scaleIn(curve: VooMotionCurve.spring)
Container().slideInLeft(curve: VooMotionCurve.bounce)

// Custom spring curve
Container().dropIn(
  curve: VooMotionCurve.springCurve(tension: 2.0),
)

Global Settings #

Configure animations globally:

VooMotionSettingsProvider(
  settings: VooMotionSettings(
    enabled: true,
    respectAccessibilitySettings: true,
    speedMultiplier: 1.0,
    defaultConfig: VooAnimationConfig(
      duration: Duration(milliseconds: 400),
      curve: Curves.easeInOut,
    ),
  ),
  child: MyApp(),
)

Advanced Usage #

Custom Animation Widget #

VooAnimatedWidget(
  config: VooAnimationConfig(),
  builder: (context, animation, child) {
    return Transform.scale(
      scale: animation.value,
      child: child,
    );
  },
  child: Text('Custom Animation'),
)

Hero Animations #

VooHeroAnimation.material(
  tag: 'hero-tag',
  child: Image.asset('image.png'),
)

Example App #

Check out the example app for a comprehensive demonstration of all available animations:

cd example
flutter run

License #

This package is part of the VooFlutter monorepo. See the root LICENSE file for details.

2
likes
160
points
235
downloads

Publisher

verified publishervoostack.com

Weekly Downloads

Simple and powerful animation package with extension methods for Flutter widgets

Homepage
Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter, vector_math, voo_ui_core

More

Packages that depend on voo_motion