Mobile 1,844 installs

Implementing Flutter Animations

by flutter/skills

Implements animated effects, transitions, and motion in a Flutter app. Use when adding visual feedback, shared element transitions, or physics-based animations.

Skill content

Visual feedback, transitions, and physics-based motion for Flutter apps using the Animation framework.

- Four animation strategies: implicit animations for simple property changes, explicit animations with playback control, Hero transitions for shared elements between routes, and physics-based animations for gesture-driven natural motion

- Core typed Animation system with AnimationController, Tween, and Curve classes; always dispose controllers to prevent memory leaks

- Staggered animations using Interval curves to coordinate multiple properties on a single timeline

- Detailed workflows for each animation pattern, from setup through validation, with runnable examples including staggered animations and custom page route transitions

Implementing Flutter Animations

Contents

- Core Concepts

- Animation Strategies

- Workflows

- Implementing Implicit Animations

- Implementing Explicit Animations

- Implementing Hero Transitions

- Implementing Physics-Based Animations

- Examples

Core Concepts

Manage Flutter animations using the core typed Animation system. Do not manually calculate frames; rely on the framework's ticker and interpolation classes.

- Animation<T>: Treat this as an abstract representation of a value that changes over time. It holds state (completed, dismissed) and notifies listeners, but knows nothing about the UI.

- AnimationController: Instantiate this to drive the animation. It generates values (typically 0.0 to 1.0) tied to the screen refresh rate. Always provide a vsync (usually via SingleTickerProviderStateMixin) to prevent offscreen resource consumption. Always dispose() controllers to prevent memory leaks.

- Tween<T>: Define a stateless mapping from an input range (usually 0.0-1.0) to an output type (e.g., Color, Offset, double). Chain tweens with curves using .animate().

- Curve: Apply non-linear timing (e.g., Curves.easeIn, Curves.bounceOut) to an animation using a CurvedAnimation or CurveTween.