Creating Smooth Animations in Flutter with AnimatedBuilder

Mamta Yadav
3 min readAug 2, 2024

--

Flutter provides a rich set of widgets and tools to create beautiful and smooth animations. One of the powerful tools in Flutter’s animation arsenal is the AnimatedBuilder widget. AnimatedBuilder is a utility widget that helps in building animations by rebuilding only the parts of the widget tree that need to be animated. This makes animations efficient and easy to manage, as it minimizes unnecessary rebuilds.

Understanding AnimationController and Animation

Before we dive into the code, let’s understand the key concepts involved in Flutter animations:

AnimationController

An AnimationController is an object that controls the animation. It manages the duration and the progress of the animation. You can think of it as the "director" of the animation, deciding when it starts, stops, or reverses.

Animation

An Animation is a class that provides a value over time. The Tween class is used to define the range of values for the animation. For example, you can create a Tween<double>(begin: 0, end: 300) to animate between 0 and 300.

With these concepts in mind, let’s build a simple Flutter application to demonstrate how to use AnimatedBuilder with an animation controller and a tween animation.

Step 1: Setting Up the Flutter Project

First, let’s set up a new Flutter project. Open your terminal and run:

flutter create animated_builder_example
cd animated_builder_example

Open the project in your preferred IDE (VS Code, Android Studio, etc.).

Step 2: Importing the Material Package

In your main.dart file, import the material package. This package provides Flutter's core material design components.

import 'package:flutter/material.dart';

Step 3: Creating the Main Function and MyApp Widget

Now, let’s create the main function and the MyApp widget. The MyApp widget will be our entry point and will return a MaterialApp.

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: AnimationExample(),
);
}
}

Step 4: Creating the AnimationExample Stateful Widget

Next, we’ll create a StatefulWidget named AnimationExample. This widget will hold our animation logic and UI.

class AnimationExample extends StatefulWidget {
const AnimationExample({Key? key}) : super(key: key);

@override
_AnimationExampleState createState() => _AnimationExampleState();
}

Step 5: Implementing the State and Animation Logic

Within the _AnimationExampleState class, we'll override the initState method to initialize our animation controller and tween animation.

class _AnimationExampleState extends State<AnimationExample> with SingleTickerProviderStateMixin {
late AnimationController _controller;
late Animation<double> _animation;

@override
void initState() {
super.initState();

_controller = AnimationController(
duration: const Duration(seconds: 2),
vsync: this,
)..repeat(reverse: true);

_animation = Tween<double>(begin: 0, end: 300).animate(_controller);
}

@override
void dispose() {
_controller.dispose();
super.dispose();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Animation Example')),
body: Center(
child: AnimatedBuilder(
animation: _animation,
builder: (context, child) {
return Container(
width: _animation.value,
height: _animation.value,
color: Colors.blue,
child: Center(child: Text('Hello', style: TextStyle(color: Colors.white))),
);
},
),
),
);
}
}

Step 6: Running the App

Save your main.dart file and run the app using flutter run. You should see a blue square that smoothly transitions between 0 and 300 pixels in size, with the text "Hello" centered within it.

For a deeper dive into Flutter animations, watch this YouTube Tutorial. The channel offers clear, step-by-step guides on AnimatedBuilder and other animation techniques.

Conclusion

In this blog, we covered the basics of creating animations in Flutter using the AnimatedBuilder widget. We learned about AnimationController and Animation, and how to use them with a Tween to create smooth animations. The AnimatedBuilder widget is a powerful tool that helps in rebuilding only the parts of the widget tree that need to be animated, thus making animations efficient and easy to manage.

Experiment with different types of animations and controllers to create more complex and engaging animations in your Flutter applications. Happy coding!

--

--

Mamta Yadav
Mamta Yadav

Written by Mamta Yadav

Information geek, TecH enthusiasm. ||||| Storyteller from my preliterate days. I write them down✍️

No responses yet