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

Flutter AnimatedSwitcher:让切换退出动画正向执行而非反向

解决AnimatedSwitcher中RotationTransition进入/退出旋转方向一致的问题

AnimatedSwitcher默认会给退出的子组件使用反向动画(动画值从1到0),进入的子组件则用正向动画(0到1),这就是导致你看到RotationTransition方向相反的原因。要让旋转方向统一且不影响淡入淡出,只需判断子组件的进入/退出状态,单独调整RotationTransition的动画逻辑:

AnimatedSwitcher(
  transitionBuilder: (child, anim) {
    // 判断当前子组件是否处于退出状态
    final isExit = child is AnimatedSwitcherLayoutEntry && child.isExit;

    return RotationTransition(
      // 退出时反转动画,保持正向旋转
      turns: isExit ? ReverseAnimation(anim) : anim,
      child: FadeTransition(
        // 淡入淡出保留原有动画逻辑
        opacity: anim,
        child: child,
      ),
    );
  },
  duration: const Duration(milliseconds: 500), // 根据需求调整动画时长
)

关键说明:

  • AnimatedSwitcherLayoutEntry是AnimatedSwitcher内部包装子组件的类,通过它的isExit属性可以精准判断当前子组件是进入还是退出状态。
  • ReverseAnimation(anim)会将退出时的反向动画(1→0)反转成正向(0→1),让RotationTransition在进入、退出时都执行相同方向的旋转。
  • FadeTransition继续使用原anim,确保进入时淡入、退出时淡出的逻辑不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:53:25