onGenerateRoute method

Route onGenerateRoute(
  1. RouteSettings settings
)

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