RepaintBoundary.

When creating an AnimationController, you pass it a vsync argument.
The presence of vsync prevents offscreen animations from consuming
unnecessary resources.
You can use your stateful object as the vsync by adding
SingleTickerProviderStateMixin to the class definition.
You can see an example of this in animate1 on GitHub.

Note:
  In some cases, a position might exceed the AnimationController’s
  0.0-1.0 range. For example, the fling() function
  allows you to provide velocity, force, and position
  (via the Force object). The position can be anything and
  so can be outside of the 0.0 to 1.0 range.