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

如何在Flutter中实现悠悠球动画?求内置往复循环动画方案

实现AnimationController正反向循环动画的内置方案

当然有啦!Flutter的AnimationController其实已经内置了你需要的功能,完全不用自己手动写逻辑来控制正反向切换。

你只需要在调用repeat()方法时,传入reverse: true这个参数就可以了——它会让动画先正向执行完整个周期,接着自动反向播放回初始状态,然后重复这个正反向交替的过程,而不是每次都从头开始。

代码示例

// 首先初始化你的AnimationController
final AnimationController _animationController = AnimationController(
  duration: const Duration(seconds: 2), // 动画时长
  vsync: this, // 传入TickerProvider,通常State类混入SingleTickerProviderStateMixin
);

// 启动正反向循环动画
@override
void initState() {
  super.initState();
  _animationController.repeat(reverse: true);
}

// 别忘了在dispose时释放资源
@override
void dispose() {
  _animationController.dispose();
  super.dispose();
}

额外小技巧

  • 如果不需要无限循环,可以通过count参数指定循环次数,比如_animationController.repeat(reverse: true, count: 3),这样动画会完成3次正反向循环后自动停止。
  • 要是你需要在动画正向结束、反向结束时触发一些逻辑,可以给控制器添加状态监听:
    _animationController.addStatusListener((status) {
      if (status == AnimationStatus.completed) {
        // 正向播放结束时的操作
        print("动画正向执行完毕");
      } else if (status == AnimationStatus.dismissed) {
        // 反向播放回到初始状态时的操作
        print("动画反向执行完毕,回到起点");
      }
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:25:55