With these few changes,
you’ve created your first animation in Flutter!

Dart language tricks:
  You might not be familiar with Dart’s cascade notation—the two
  dots in ..addListener(). This syntax means that the addListener()
  method is called with the return value from animate().
  Consider the following example:

animation = Tween<double>(begin: 0, end: 300).animate(controller)

..addListener(() {
    // ···
  });

This code is equivalent to:

animation = Tween<double>(begin: 0, end: 300).animate(controller);

animation.addListener(() {
    // ···
  });

To learn more about cascades,
  check out Cascade notation
  in the Dart language documentation.

Simplifying with Animated­Widget

What's the point?