v3.0.0
-
Add support for layer blend mode
-
Allow to load Telegram Stickers (.tgs)
Lottie.asset(
'sticker.tgs',
decoder: LottieComposition.decodeGZip,
)
- Add
renderCache
parameter.
Lottie.asset('assets/complex_animation.json',
renderCache: RenderCache.raster,
)
Opt-in to a special render mode where the frames of the animation are lazily rendered and kept in a cache.
Subsequent runs of the animation are cheaper to render.
There are 2 kinds of caches:
RenderCache.raster: keep the frame rasterized in the cache (as [dart:ui.Image]).
Subsequent runs of the animation are very cheap for both the CPU and GPU but it takes
a lot of memory.
RenderCache.drawingCommands: keep the frame as a list of graphical operations ([dart:ui.Picture]).
Subsequent runs of the animation are cheaper for the CPU but not for the GPU.
- Expose a hook to customize how to decode zip archives. This is useful for dotlottie archives (.lottie) when we want
to specify a specific .json file inside the archive
Lottie.asset(
'animation.lottie',
decoder: customDecoder,
);
Future<LottieComposition?> customDecoder(List<int> bytes) {
return LottieComposition.decodeZip(bytes, filePicker: (files) {
return files.firstWhere((f) => f.name == 'animations/cat.json');
});
}
-
Add
backgroundLoading
parameter toLottie.asset|network|file|memory
.
IfbackgroundLoading
is true, the animation will be loaded in a background isolate.
This is useful for large animations that can take a long time to parse and block the UI work. -
Remove the name property from
LottieComposition
-
imageProviderFactory
is not used in .zip file by default anymore.
To restore the old behaviour, use:
Future<LottieComposition?> decoder(List<int> bytes) {
return LottieComposition.decodeZip(bytes, imageProviderFactory: imageProviderFactory);
}
Lottie.asset('anim.json', decoder: decoder)
- Disable gradient cache optimization when
ValueDelegate.gradientColor
is used - Use
DefaultAssetBundle.of
inAssetLottie
before fallback torootBundle
- Add
BuildContext
optional parameter inLottieProvider.load
- Fixed varying opacity stops across keyframes in the same gradient
- Fixed rounded corners for non-closed curves
- Implement auto-orient
- Require Flutter 3.16