sharedAxis static method

PageRouteBuilder sharedAxis({
  1. required Widget page,
  2. bool vertical = false,
  3. Duration duration = const Duration(milliseconds: 350),
})
  1. Shared Axis transition route (Horizontal or Vertical with crossfade)

Implementation

static PageRouteBuilder sharedAxis({
  required Widget page,
  bool vertical = false,
  Duration duration = const Duration(milliseconds: 350),
}) {
  return PageRouteBuilder(
    pageBuilder: (context, animation, secondaryAnimation) => page,
    transitionDuration: duration,
    reverseTransitionDuration: duration,
    transitionsBuilder: (context, animation, secondaryAnimation, child) {
      final slideTween = Tween<Offset>(
        begin: vertical ? const Offset(0.0, 0.12) : const Offset(0.12, 0.0),
        end: Offset.zero,
      ).chain(CurveTween(curve: MotionCurves.swiftOut));

      return SlideTransition(
        position: animation.drive(slideTween),
        child: FadeTransition(
          opacity: animation,
          child: child,
        ),
      );
    },
  );
}