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

Lottie Animation点击仅生效一次求助:如何实现每次点击播放动画

解决Flutter中Lottie动画仅首次点击生效的问题

问题原因

你的问题出在AnimationController的状态管理上:第一次调用forward()后,控制器会运行到动画结束的completed状态,后续再调用forward()时,因为控制器已经处于终点位置,不会再触发动画播放。

解决方案

每次点击时,先将控制器重置到初始状态,再执行播放操作。同时记得在组件销毁时释放控制器资源,避免内存泄漏。

修改后的完整代码

import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';

void main() async {
  runApp(const App());
}

class App extends StatefulWidget {
  const App({super.key});

  @override
  State<App> createState() {
    return _AppState();
  }
}

class _AppState extends State<App> with SingleTickerProviderStateMixin {
  late final AnimationController my_location_controller;

  @override
  void initState() {
    super.initState();
    my_location_controller =
        AnimationController(vsync: this, duration: const Duration(seconds: 5));
  }

  @override
  void dispose() {
    // 销毁控制器释放资源
    my_location_controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      color: Colors.lightBlue,
      home: Scaffold(
        backgroundColor: Colors.lightBlue,
        body: Center(
          child: SizedBox(
            width: 300,
            height: 300,
            child: GestureDetector(
              onTap: () {
                // 先重置控制器到初始状态,再播放
                my_location_controller.reset();
                my_location_controller.forward();
              },
              child: Lottie.asset(
                'assets/my_location.json',
                controller: my_location_controller,
                // 手动控制播放,关闭自动播放和循环
                animate: false,
                repeat: false,
              ),
            ),
          ),
        ),
      ),
    );
  }
}

补充说明

  • 将animate和repeat设为false,避免Lottie自动循环播放,完全由点击事件控制动画触发
  • 添加dispose()方法销毁控制器,这是使用AnimationController的标准最佳实践,防止内存泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:10:25