createRoute method
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,
);
}
}