Flutter Animations: Part 1

Cover for Flutter Animations: Part 1

In a prior post, we talked about the new cross-platform mobile development framework from Google called Flutter. It reviews how Flutter took a different approach from React Native and NativeScript in creating a mobile application.

Learning Resources

Free Resources:

  • Flutter.io
  • Tensor Programming YouTube Channel
  • MTechViral YouTube Channel
  • Andrea Bizzotto YouTube Channel
  • “Flutter & Dart – The Complete Guide (IOS & Android Apps)” on Udemy
  • “Flutter & Dart – The Complete Flutter App Development Course” on Udemy
  • “Flutter – Intermediate” on Udemy
  • “Flutter – Advanced” on Udemy

Implicit Animations

Implicit animation widgets derive from the abstract class ImplicitlyAnimatedWidget. These classes allow easy animation of basic options like size, opacity, text style, and position.

AnimatedContainer Example

The AnimatedContainer widget allows animating properties such as:

  • Alignment
  • Padding
  • Color
  • Decoration
  • Width
  • Height
  • Constraints
  • Margin
  • Transform

Here’s a simple example demonstrating height and width animation:

class _MyHomePageState extends State<MyHomePage> {
  bool _large = false;

  void _changeSize() {
    setState(() {
      _large = !_large;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: AnimatedContainer(
          duration: Duration(milliseconds: 500),
          width: _large ? double.infinity : 200,
          height: _large ? double.infinity : 200,
          color: Colors.blue,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _changeSize,
        child: Icon(Icons.play_arrow),
      ),
    );
  }
}

This example creates a blue container that expands to fill the screen when the floating action button is pressed, and contracts back to a 200x200 square when pressed again. The animation duration is set to 500 milliseconds, creating a smooth transition effect.