Welcome to the world of animations in Flutter! Lottie is a powerful library that allows you to display stunning Adobe After Effects animations natively on Android and iOS. By converting these animations into a JSON format using Bodymovin, you can effortlessly integrate them into your mobile applications with just a few lines of code. In this blog post, we will guide you through the various features and functionalities of Lottie for Flutter.
Getting Started with Lottie
Before we dive into the usage, make sure you have the Lottie library added to your project. You can find the library documentation on pub.dev to learn how to include it in your Flutter application.
Simple Animation
Let’s start with the basics. Below is the simplest way to display a Lottie animation:
import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp(super.key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: ListView(
children: [
// Load a Lottie file from your assets
Lottie.asset('assets/lottie_logo1.json'),
// Load a Lottie file from a remote URL
Lottie.network(
'https://raw.githubusercontent.com/xvrh/lottie-flutter/master/example/assets/MobiloA.json'),
// Load an animation and its images from a zip file
Lottie.asset('assets/lottiefiles/angel.zip'),
],
),
),
);
}
}
Think of Lottie as your magic box of animations. Just like how placing an object in a box can bring it to life with a flick of a switch, loading a Lottie file into your widget immediately animates it. In the example above, we have demonstrated loading animations from assets, a URL, and even from a zip file!
Controlling Animation with AnimationController
To have greater control over your animations, you can specify a custom AnimationController. This allows you to play, pause, and control the speed of your animation anytime you wish:
import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
void main() => runApp(const MyApp());
class MyApp extends StatefulWidget {
const MyApp(super.key);
@override
State createState() => _MyAppState();
}
class _MyAppState extends State with TickerProviderStateMixin {
late final AnimationController _controller;
@override
void initState() {
super.initState();
_controller = AnimationController(vsync: this);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: ListView(
children: [
Lottie.asset(
'assets/lottie_logo1.json',
controller: _controller,
onLoaded: (composition) {
// Configure the AnimationController with the duration of the Lottie file
_controller
..duration = composition.duration
..forward();
},
),
],
),
),
);
}
}
This custom controller lets you orchestrate the animation like a conductor leads an orchestra. You can command the animation to start, finish, rewind, or loop as you please!
Tips and Tricks
- Control Widget Size: Just like you would stretch or compress an image, you can specify the size of your Lottie widget using width and height properties.
- Custom Loading: Load animations using AssetLottie or NetworkLottie for more control over the loading process.
- Draw Custom Animation: For advanced users, tapping into Canvas allows you to draw Lottie compositions at specific frames.
- Modify at Runtime: Change animation properties during runtime such as colors and positions using ValueDelegate.
- Frame Rate Control: Adjust the frame rate to suit device capabilities, potentially increasing the fluidity of your animations.
Troubleshooting Section
If you run into any issues while implementing Lottie animations, here are a few troubleshooting ideas:
- Ensure that the JSON file paths are correctly defined in your project. If your animations are not loading, it’s often a path issue.
- Check for any missing assets in your project. Sometimes, forgetting to add an asset file can cause animations to fail.
- If animations seem sluggish, try adjusting the render cache parameter or inspect the frame rate settings.
- Verify the compatibility of the Lottie version with your Flutter version. Keeping both updated can help prevent bugs.
For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.
Final Thoughts
At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

