Curved­Animation

A CurvedAnimation defines the animation’s progress
as a non-linear curve.

Note:
  The Curves class defines many commonly used curves,
  or you can create your own. For example:

Browse the Curves documentation for a complete listing
  (with visual previews) of the Curves constants that ship with Flutter.

CurvedAnimation and AnimationController (described in the next section)
are both of type Animation<double>, so you can pass them interchangeably.
The CurvedAnimation wraps the object it’s modifying—you
don’t subclass AnimationController to implement a curve.

Animation­Controller

AnimationController is a special Animation
object that generates a new value whenever the hardware
is ready for a new frame. By default,
an AnimationController linearly produces the numbers
from 0.0 to 1.0 during a given duration.
For example, this code creates an Animation object,
but does not start it running: