onGenerateRoute method
Generates a route object based on the current route name
Usage:
static Routes routes = Routes();
...
MaterialApp(
...
onGenerateRoute: routes.onGenerateRoute,
...
);
Implementation
Route<dynamic> onGenerateRoute(RouteSettings settings) {
final PageArguments? args =
settings.arguments as PageArguments<BasePageTransition>?;
final routeFragments = settings.name!.split('/');
String routePrefix = '';
if (routeFragments.length > 1) {
routePrefix = routeFragments[1];
} else if (routeFragments.isNotEmpty) {
routePrefix = routeFragments[0];
}
routePrefix = '/$routePrefix';
if (!this._routes!.containsKey(routePrefix)) {
routePrefix = '/';
print('Routing: [${settings.name}] ==> [$routePrefix]');
}
RouteTransitionsBuilder? transitionsBuilder;
if (args?.transition != null) {
transitionsBuilder = args!.transition!.build();
} else if (this.defaultTransition != null) {
transitionsBuilder = this.defaultTransition!.build();
}
return PageRouteBuilder(
settings: settings,
pageBuilder: (
BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
) =>
this._routes![routePrefix]!,
transitionsBuilder: transitionsBuilder ?? _defaultTransitionsBuilder,
);
}