+
                  upperBound: 100,

24

+
                );

22
25

23
26

@override

The vsync parameter makes use of the
SingleTickerProviderStateMixin you added in step 1:

vsync:
Remember from step 1 that vsync is a required parameter
that takes a TickerProvider.
By passing this for the vsync parameter,
you are passing _BouncingBallDemoState
as the TickerProvider object to the AnimationController constructor.
_BouncingBallDemoState implements the TickerProvider interface
because step 1 adds the SingleTickerProviderStateMixin
with _BouncingBallDemoState.

The duration, upperBound, and lowerBound parameters
define the following parts of your animation:

duration: The duration of the animation is 1 second.