When using repeat(), the animation controller uses a linear
interpolation between the given bounds over the given duration, but
does not stop.

When using animateTo(), the animation controller does a linear
interpolation over the given duration from the current value to the
given target. If no duration is given to the method, the default
duration of the controller and the range described by the controller’s
lower bound and upper bound is used to determine the velocity of the
animation.

When using fling(), a Force is used to create a specific
simulation which is then used to drive the controller.

When using animateWith(), the given simulation is used to drive the
controller.

These methods all return the future that the Ticker provides and
which will resolve when the controller next stops or changes
simulation.

Attaching animatables to animations