You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中Lottie动画显示异常问题求助

问题描述

我有一个Adobe After Effects制作的动画(原效果):
AE原动画效果

但在Flutter中使用Lottie组件显示的效果却和原动画不一致:
Flutter中显示的效果

我的Flutter实现代码如下:

Expanded(
  child: Center(
    child: Padding(
      padding: const EdgeInsets.only(left: 15.0, right: 15.0),
      child: Lottie.asset(
        'lib/assets/data.json',
        repeat: false,
        reverse: false,
        animate: false,
        controller: _controller,
        onLoaded: (composition) {
          _controller
            ..duration = composition.duration
            ..reset();
        },
      ),
    ),
  ),
),
解决建议
  • 检查Lottie导出配置:确保用AE官方Bodymovin插件导出时,勾选了「Merge Shapes」「Trim Paths」等必要选项,避免复杂图层属性或效果被丢失。导出前可以清理AE工程里的冗余图层、未使用的效果。
  • 添加适配参数修正变形:给Lottie组件加上fit属性控制缩放逻辑,比如设置fit: BoxFit.contain来保持原动画比例,避免拉伸错位:
    Lottie.asset(
      'lib/assets/data.json',
      repeat: false,
      reverse: false,
      animate: false,
      controller: _controller,
      fit: BoxFit.contain, // 添加适配参数
      onLoaded: (composition) {
        _controller
          ..duration = composition.duration
          ..reset();
      },
    ),
    
  • 调整控制器播放逻辑:当前代码设置animate: false且调用reset(),会让动画停在初始帧。如果需要正常播放动画,可在onLoaded中调用forward(),或者移除animate: false:
    onLoaded: (composition) {
      _controller
        ..duration = composition.duration
        ..forward(); // 启动动画播放
    },
    
  • 更新Lottie依赖:旧版lottie包可能存在兼容性问题,在pubspec.yaml中升级到最新版本:
    dependencies:
      lottie: ^latest_version
    
  • 校验AE图层锚点:AE中图层锚点位置异常可能导致Lottie解析错位,导出前重置所有图层的变换属性(锚点、位置、缩放)到合理状态。

内容的提问来源于stack exchange,提问作者Alexandr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:31:38