slideTransition method

PageRouteBuilder slideTransition({
  1. required Widget screen(
    1. BuildContext ctx,
    2. Animation<double> animation,
    3. Animation<double> secondaryAnimation
    ),
  2. SlidePosition slidePosition = SlidePosition.fromBottom,
  3. Duration transitionDuration = const Duration(milliseconds: 300),
  4. Duration reverseTransitionDuration = const Duration(milliseconds: 300),
})

Implementation

PageRouteBuilder slideTransition({
  required Widget Function(
    BuildContext ctx,
    Animation<double> animation,
    Animation<double> secondaryAnimation,
  ) screen,
  SlidePosition slidePosition = SlidePosition.fromBottom,
  Duration transitionDuration = const Duration(milliseconds: 300),
  Duration reverseTransitionDuration = const Duration(milliseconds: 300),
}) {
  var begin = Offset.zero;
  const end = Offset.zero;

  switch (slidePosition) {
    case SlidePosition.fromBottom:
      begin = const Offset(0, 1);
      break;
    case SlidePosition.fromTop:
      begin = const Offset(0, -1);
      break;
    case SlidePosition.fromLeft:
      begin = const Offset(-1, 0);
      break;
    case SlidePosition.fromRight:
      begin = const Offset(1, 0);
      break;
    default:
      begin = Offset.zero;
      break;
  }
  final tween = Tween(begin: begin, end: end);
  return PageRouteBuilder(
    pageBuilder: screen,
    transitionDuration: transitionDuration,
    reverseTransitionDuration: reverseTransitionDuration,
    transitionsBuilder: (context, animation, secondaryAnimation, child) {
      final offsetAnimation = animation.drive(tween);
      return SlideTransition(position: offsetAnimation, child: child);
    },
  );
}