createRoute method

  1. @override
Route createRoute(
  1. BuildContext context
)
override

Creates the Route that corresponds to this page.

The created Route must have its Route.settings property set to this Page.

Implementation

@override
Route createRoute(BuildContext context) {
  if (routeBuilder != null) {
    return routeBuilder!(context, this, child);
  }
  switch (type) {
    case BeamPageType.cupertino:
      return CupertinoPageRoute(
        title: title,
        fullscreenDialog: fullScreenDialog,
        settings: this,
        builder: (context) => child,
      );
    case BeamPageType.fadeTransition:
      return PageRouteBuilder(
        fullscreenDialog: fullScreenDialog,
        opaque: opaque,
        settings: this,
        pageBuilder: (_, __, ___) => child,
        transitionsBuilder: (_, animation, __, child) => FadeTransition(
          opacity: animation,
          child: child,
        ),
      );
    case BeamPageType.slideTransition:
      return PageRouteBuilder(
        fullscreenDialog: fullScreenDialog,
        opaque: opaque,
        settings: this,
        pageBuilder: (_, __, ___) => child,
        transitionsBuilder: (_, animation, __, child) => SlideTransition(
          position: animation.drive(
              Tween(begin: const Offset(0, 1), end: const Offset(0, 0))
                  .chain(CurveTween(curve: Curves.ease))),
          child: child,
        ),
      );
    case BeamPageType.slideRightTransition:
      return PageRouteBuilder(
        fullscreenDialog: fullScreenDialog,
        opaque: opaque,
        settings: this,
        pageBuilder: (_, __, ___) => child,
        transitionsBuilder: (_, animation, __, child) => SlideTransition(
          position: animation.drive(
              Tween(begin: const Offset(1, 0), end: const Offset(0, 0))
                  .chain(CurveTween(curve: Curves.ease))),
          child: child,
        ),
      );
    case BeamPageType.slideLeftTransition:
      return PageRouteBuilder(
        fullscreenDialog: fullScreenDialog,
        opaque: opaque,
        settings: this,
        pageBuilder: (_, __, ___) => child,
        transitionsBuilder: (_, animation, __, child) => SlideTransition(
          position: animation.drive(
              Tween(begin: const Offset(-1, 0), end: const Offset(0, 0))
                  .chain(CurveTween(curve: Curves.ease))),
          child: child,
        ),
      );
    case BeamPageType.slideTopTransition:
      return PageRouteBuilder(
        fullscreenDialog: fullScreenDialog,
        opaque: opaque,
        settings: this,
        pageBuilder: (_, __, ___) => child,
        transitionsBuilder: (_, animation, __, child) => SlideTransition(
          position: animation.drive(
              Tween(begin: const Offset(0, -1), end: const Offset(0, 0))
                  .chain(CurveTween(curve: Curves.ease))),
          child: child,
        ),
      );
    case BeamPageType.scaleTransition:
      return PageRouteBuilder(
        fullscreenDialog: fullScreenDialog,
        opaque: opaque,
        settings: this,
        pageBuilder: (_, __, ___) => child,
        transitionsBuilder: (_, animation, __, child) => ScaleTransition(
          scale: animation,
          child: child,
        ),
      );
    case BeamPageType.noTransition:
      return PageRouteBuilder(
        fullscreenDialog: fullScreenDialog,
        opaque: opaque,
        settings: this,
        pageBuilder: (context, animation, secondaryAnimation) => child,
      );
    default:
      return MaterialPageRoute(
        fullscreenDialog: fullScreenDialog,
        settings: this,
        builder: (context) => child,
      );
  }
}