AnimationController makes it easy to access
the current value of the animation—just
use the value property.

To “play” an animation,
you can use one of several methods that
initiate the sequence of changes to value.
For example, to “play” an animation
from its starting value to its ending value,
simply call forward().

Use .addListener() to register a callback invoked whenever
AnimationController changes its value property.
Most commonly, you register setState() with AnimationController.
This tells Flutter to rebuild the widget tree
whenever AnimationController’s value changes.

AnimationController needs a TickerProvider to
synchronize the animation’s behavior to the device’s display.

AnimationController interpolates frame values

PENDING: Image of values in AnimationController

In this example,
the AnimationController constructor takes the
optional parameters lowerBound, upperBound,
and duration:

Instantiate AnimationController:

controller