Flutter › Flutter Animations Basics

What are animation curves in Flutter, such as Curves.easeIn or Curves.bounceOut, and how do they let you control the specific pacing and feel of an animation rather than it always simply moving at a perfectly constant, linear speed?

Intermediate

Answer

An animation curve defines exactly how an animation's progress value actually changes over time relative to its overall elapsed duration, letting you create effects such as an animation that starts out relatively slowly and then noticeably accelerates, one that overshoots its final target slightly before gently settling back into place, or one that produces a distinctly bouncy, playful feeling, rather than the animation simply always moving forward at one perfectly constant, linear speed throughout its entire duration, and thoughtfully choosing an appropriate curve for a specific animation can meaningfully improve how genuinely polished and natural that resulting animation actually feels to a user.
final curvedAnimation = CurvedAnimation(
  parent: controller,
  curve: Curves.easeInOut,
);
Real-world example A card flip animation uses Curves.easeInOut specifically to make the flip motion start and end more gently and smoothly, producing a noticeably more polished, natural feeling result compared to the exact same animation moving at one perfectly constant, unchanging linear speed throughout.

Common follow-ups: What is the difference between an easeIn curve and an easeOut curve specifically?;Can you actually create your own genuinely custom animation curve beyond Flutter's own built in provided options?