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 (pageRouteBuilder != null) {
    return pageRouteBuilder!(this, child);
  }
  switch (type) {
    case BeamPageType.cupertino:
      return CupertinoPageRoute(
        settings: this,
        builder: (context) => child,
      );
    case BeamPageType.fadeTransition:
      return PageRouteBuilder(
        settings: this,
        pageBuilder: (_, __, ___) => child,
        transitionsBuilder: (_, animation, __, child) => FadeTransition(
          opacity: animation,
          child: child,
        ),
      );
    case BeamPageType.slideTransition:
      return PageRouteBuilder(
        settings: this,
        pageBuilder: (_, __, ___) => child,
        transitionsBuilder: (_, animation, __, child) => SlideTransition(
          position: animation.drive(
              Tween(begin: Offset(0, 1), end: Offset(0, 0))
                  .chain(CurveTween(curve: Curves.ease))),
          child: child,
        ),
      );
    case BeamPageType.scaleTransition:
      return PageRouteBuilder(
        settings: this,
        pageBuilder: (_, __, ___) => child,
        transitionsBuilder: (_, animation, __, child) => ScaleTransition(
          scale: animation,
          child: child,
        ),
      );
    case BeamPageType.noTransition:
      return PageRouteBuilder(
        settings: this,
        pageBuilder: (context, animation, secondaryAnimation) => child,
      );
    default:
      return MaterialPageRoute(
        settings: this,
        builder: (context) => child,
      );
  }
}