An Animation object knows the current state of an animation
(for example, whether it’s started, stopped,
or moving forward or in reverse),
but doesn’t know anything about what appears onscreen.

An AnimationController manages the Animation.

A CurvedAnimation defines progression as a non-linear curve.

A Tween interpolates between the range of data as used by the
object being animated.
For example, a Tween might define an interpolation
from red to blue, or from 0 to 255.

Use Listeners and StatusListeners to monitor
animation state changes.

The animation system in Flutter is based on typed
Animation objects. Widgets can either incorporate
these animations in their build functions directly by
reading their current value and listening to their state
changes or they can use the animations as the basis of
more elaborate animations that they pass along to
other widgets.

Animation<double>