Flutter Animation

A portrait painting style image of a pirate holding an iPhone.

by The Captain

August 8, 2023

Deep Dive into Flutter Animation: Using Animation Controller and Tween

Animations bring life to your Flutter applications by adding fluidity and interactivity. Flutter provides a powerful Animation API, which allows developers to create beautiful and complex animations effortlessly. In this tutorial, we will explore how to use the Animation Controller and Tween classes to create smooth and seamless animations in Flutter.

The Animation Controller is the core component responsible for managing the animation's timeline and state. It provides methods to start, stop, and control animations. The Tween class defines the range of values for the animation, and interpolates between those values over time.

To begin, let's create a simple animation that animates the opacity of a widget from 0.0 to 1.0 over a duration of 1 second:

AnimationController _animationController;

void initState() {
  _animationController = AnimationController(
    vsync: this,
    duration: Duration(seconds: 1),

void dispose() {

Widget build(BuildContext context) {
  Animation<double> animation = Tween(begin: 0.0, end: 1.0).animate(_animationController);

  return Scaffold(
    body: AnimatedBuilder(
      animation: animation,
      builder: (BuildContext context, Widget child) {
        return Opacity(
          opacity: animation.value,
          child: Center(
            child: Text(
              'Flutter Animation',
              style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
    floatingActionButton: FloatingActionButton(
      onPressed: () {
      child: Icon(Icons.play_arrow),

In the above code snippet, we first create an AnimationController in the initState() method, specifying the duration of the animation and the TickerProvider. The AnimationController is disposed of in the dispose() method to prevent memory leaks.

The animation is defined using the Tween class, specifying the begin and end values for the opacity. We then wrap the widget that we want to animate with AnimatedBuilder, which rebuilds the widget tree whenever the animation's value changes. In this case, we update the opacity of the text widget with the animation's current value.

The floating action button triggers the animation by calling the forward() method on the AnimationController.

By combining the Animation Controller and Tween, you can unleash the full potential of Flutter animations. Experiment with different properties and values to create stunning visual effects in your Flutter applications!


Flutter Animation is made easy with the Animation Controller and Tween classes. By leveraging the Animation Controller's control over the animation's timeline and the Tween's interpolation capabilities, developers can create fluid and visually appealing animations in Flutter.