Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile!
This repository is an unofficial conversion of the Lottie-android library in pure Dart.
It works on Android, iOS, macOS, linux, windows and web.
This example shows how to display a Lottie animation in the simplest way.
The Lottie
widget will load the json file and run the animation indefinitely.
import 'example/lib/main.dart';
This example shows how to take full control over the animation by providing your own AnimationController
.
With a custom AnimationController
you have a rich API to play the animation in various ways: start and stop the animation when you want,
play forward or backward, loop between specifics points...
import 'example/lib/examples/animation_controller.dart';
See this file for a more comprehensive example.
The Lottie
widget takes the same arguments and have the same behavior as the Image
widget
in term of controlling its size.
Lottie.asset(
'assets/LottieLogo1.json',
width: 200,
height: 200,
fit: BoxFit.fill,
)
width
and height
are optionals and fallback on the size imposed by the parent or on the intrinsic size of the lottie
animation.
The Lottie
widget has several convenient constructors (Lottie.asset
, Lottie.network
, Lottie.memory
) to load, parse and
cache automatically the json file.
Sometime you may prefer to have full control over the loading of the file. Use LottieComposition.fromByteData
to
parse the file from a list of bytes.
This example shows how to load and parse a Lottie composition from a json file.
import 'example/lib/examples/custom_load.dart#example';
This example goes low level and shows you how to draw a LottieComposition
on a custom Canvas at a specific frame in
a specific position and size.
import 'example/lib/examples/custom_draw.dart#example';
This example shows how to modify some properties of the animation at runtime. Here we change the text,
the color, the opacity and the position of some layers.
For each ValueDelegate
we can either provide a static value
or a callback
to compute a value for a each frame.
import 'example/lib/examples/simple_dynamic_properties.dart#example';
This port supports the same feature set as Lottie Android.
Run the app with flutter run -d chrome --web-renderer canvaskit
See a preview here: https://xvrh.github.io/lottie-flutter-web/
See the example
folder for more code samples of the various possibilities.