Skip to content

v3.0.0

Compare
Choose a tag to compare
@xvrh xvrh released this 11 Jan 14:09
· 20 commits to master since this release
  • 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 to Lottie.asset|network|file|memory.
    If backgroundLoading 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 in AssetLottie before fallback to rootBundle
  • Add BuildContext optional parameter in LottieProvider.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