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

如何在App中实现点击按钮先显示Lottie加载动画再跳转页面?

实现点击按钮先显示Lottie加载动画再跳转页面

你给出的代码目前存在问题:Lottie设置了repeat: true会无限循环,对话框无法自动关闭,也就触发不了后续的页面跳转。下面是修正后的可行方案:

步骤1:配置依赖

先在pubspec.yaml中添加lottie依赖:

dependencies:
  flutter:
    sdk: flutter
  lottie: ^2.7.0 # 建议使用最新版本

执行flutter pub get完成依赖安装。

步骤2:修改点击事件逻辑

通过监听Lottie动画的加载与播放状态,让动画完整播放后自动关闭对话框,再执行页面跳转:

InkWell(
  onTap: () async {
    // 弹出加载对话框
    await showDialog(
      context: context,
      barrierDismissible: false, // 禁止点击空白关闭对话框
      builder: (context) => Center(
        child: Lottie.asset(
          'assets/lotties/rocket.json',
          repeat: false, // 仅播放一次动画
          animate: true,
          onLoaded: (composition) {
            // 动画加载完成后,延迟到播放结束再关闭对话框
            Future.delayed(composition.duration, () {
              Navigator.of(context).pop();
            });
          },
        ),
      ),
    );
    // 对话框关闭后执行页面跳转
    Navigator.of(context).push(MaterialPageRoute(
      builder: (context) => SecondScreen(),
    ));
  },
  child: // 这里放你的按钮UI组件
)

关键逻辑说明

  • barrierDismissible: false:避免用户在加载过程中误触关闭对话框,保证流程完整。
  • repeat: false:让动画只播放一次,防止无限循环无法触发后续操作。
  • onLoaded回调:获取动画总时长,延迟对应时间后关闭对话框,确保动画完整展示。
  • await关键字:等待对话框完全关闭后,再执行页面跳转逻辑。

内容的提问来源于stack exchange,提问作者Buğra Aykan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:24:14