animate_do 5.1.0 copy "animate_do: ^5.1.0" to clipboard
animate_do: ^5.1.0 copied to clipboard

Beautiful animations inspired by Animate.css, providing customizable widget-based animations with no external dependencies.

animate_do #

A Flutter animation package inspired by Animate.css, built with zero external dependencies.

Dart 3 Null Safety Platforms pub.dev

Animate_do demo animation


Getting Started #

Every animation widget ships with sensible defaults and is fully customizable. Drop it around any widget and you're done.


Properties #

Property Type Description
key Key Optional widget key reference
child Widget Required widget to animate
duration Duration Duration of the animation
delay Duration Delay before the animation starts
from double Initial or final value for more pronounced slide/fade effects
animate bool Toggle falsetrue to trigger; works with setState, Bloc, Provider, Redux, etc.
infinite bool Loops the animation indefinitely
spins double Number of rotations — applies to Spin, Roulette, SpinPerfect
manualTrigger bool Disables auto-play; requires the controller callback to drive the animation
controller Function Exposes the AnimationController for advanced control
onFinish Function Callback fired when the animation completes; receives an AnimateDoDirection (forward / backward)
curve Curve Custom easing curve

Available Animations #

Fade In #

FadeIn FadeInDown FadeInDownBig FadeInUp
FadeInUpBig FadeInLeft FadeInLeftBig FadeInRight
FadeInRightBig

Fade Out #

FadeOut FadeOutDown FadeOutDownBig FadeOutUp
FadeOutUpBig FadeOutLeft FadeOutLeftBig FadeOutRight
FadeOutRightBig

Bounce In #

BounceInDown BounceInUp BounceInLeft BounceInRight

Elastic In #

ElasticIn ElasticInDown ElasticInUp ElasticInLeft
ElasticInRight

Slide In #

SlideInDown SlideInUp SlideInLeft SlideInRight

Back In / Back Out #

BackInDown BackInUp BackInLeft BackInRight
BackOutDown BackOutUp BackOutLeft BackOutRight

Flip In #

FlipInX FlipInY

Zoom #

ZoomIn ZoomOut

Attention Seekers #

All attention seekers support the infinite property to loop indefinitely.

Bounce Dance Flash Pulse
Flip Roulette ShakeX ShakeY
Spin SpinPerfect Swing HeartBeat
Wobble Jello Tada RubberBand

Custom Animations #

These widgets let you move widgets around the screen and chain them with any other animation.

MoveTo MoveToArc

Two Syntaxes #

Both syntaxes are fully supported. Use whichever feels more natural to you.

Sugar Syntax #

Row(
  mainAxisAlignment: MainAxisAlignment.spaceAround,
  children: [
    const Square().fadeInLeft(),
    const Square().fadeInUp(),
    const Square().fadeInDown(),
    const Square().fadeInRight(),
  ],
)

Class Syntax #

Row(
  mainAxisAlignment: MainAxisAlignment.spaceAround,
  children: [
    FadeInLeft(child: Square()),
    FadeInUp(child: Square()),
    FadeInDown(child: Square()),
    FadeInRight(child: Square()),
  ],
)

Animation Chaining #

Chain multiple animations sequentially using the sugar syntax:

Square()
  .tada()
  .wobble()
  .fadeIn()

Chaining with custom animations #

const Square()
  .moveTo(top: 30)
  .moveTo(
    left: 30,
    delay: const Duration(seconds: 1),
  )
  .moveToArc(
    bottom: 30,
    right: 30,
    delay: const Duration(seconds: 2),
  )
  .fadeOut(
    delay: const Duration(seconds: 2),
  )

Triggering Animations #

Toggle with animate #

Set animate: true to play forward, animate: false to reverse. Works with any state management solution.

Animate_do animate property

FadeIn(animate: animate, child: const Square())
FadeInUp(animate: animate, child: const Square())
FadeInDown(animate: animate, child: const Square())
FadeInLeft(animate: animate, child: const Square())
FadeInRight(animate: animate, child: const Square())

Events — onFinish #

The onFinish callback fires when an animation completes, passing an AnimateDoDirection value (forward or backward).

Sugar syntax

const Square().fadeIn(
  animate: animate,
  delay: const Duration(milliseconds: 100),
  onFinish: (direction) => print('$direction'),
),

Class syntax

FadeIn(
  animate: animate,
  delay: const Duration(milliseconds: 100),
  onFinish: (direction) => print('$direction'),
  child: const Square(),
),

Manual Trigger #

Use manualTrigger: true together with the controller callback to drive the animation yourself — useful when you need full control over playback.

Note: When using manualTrigger, you are responsible for calling controller.forward() and controller.reverse() explicitly.

class _MyWidgetState extends State<MyWidget> {
  late AnimationController animateController;

  @override
  Widget build(BuildContext context) {
    return FadeInUp(
      manualTrigger: true,
      controller: (controller) => animateController = controller,
      child: YourWidget(),
    );
  }
}

Demos #

Animate_do demo

Animate_do demo

Animate_do demo

Animate_do demo

For complete runnable examples, see the example folder.


If you find this package useful, consider leaving a like on pub.dev. Feedback and suggestions are always welcome.

4.89k
likes
160
points
88.2k
downloads
screenshot

Documentation

API reference

Publisher

verified publisherfernando-herrera.com

Weekly Downloads

Beautiful animations inspired by Animate.css, providing customizable widget-based animations with no external dependencies.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter

More

Packages that depend on animate_do