iconToggleTransition property

FxViewTransitionTheme get iconToggleTransition

Implementation

FxViewTransitionTheme get iconToggleTransition => FxViewTransitionTheme(
  duration: const Duration(milliseconds: 350),
  switchInCurve: Curves.easeOutBack,
  switchOutCurve: Curves.easeInBack,
  transitionBuilder: (child, anim) {
    // Incoming icon spins in from 180° → 0°
    final turnIn = Tween<double>(begin: 0.5, end: 0.0).animate(anim);
    // Outgoing icon spins out 0° → -90°
    final turnOut = Tween<double>(begin: 0.0, end: -0.25).animate(
      ReverseAnimation(anim),
    );
    return RotationTransition(
      turns: anim.status == AnimationStatus.reverse ? turnOut : turnIn,
      child: FadeTransition(
        opacity: anim,
        child: ScaleTransition(
          scale: Tween<double>(begin: 0.85, end: 1.0).animate(anim),
          child: child,
        )
      ),
    );
  },
);