getPageRoute method

Route? getPageRoute(
  1. RouteSettings settings, {
  2. MicroAppBaseRoute? baseRoute,
  3. bool? routeNativeOnError,
})

Implementation

Route? getPageRoute(RouteSettings settings,
    {MicroAppBaseRoute? baseRoute, bool? routeNativeOnError}) {
  final routeName = settings.name;
  final routeArguments = settings.arguments;
  final pageBuilder = getPageBuilder(routeName, baseRoute: baseRoute);

  if (pageBuilder == null) {
    if (routeName != null && (routeNativeOnError ?? false)) {
      pushNamedNative(routeName, arguments: routeArguments);
    }
    return null;
  }

  if (pageBuilder.hasModalBuilder) {
    return pageBuilder.modalBuilder!(settings);
  } else if (pageBuilder.hasWidgetBuilder) {
    if (pageBuilder.hasWidgetRouteBuilder) {
      return pageBuilder.widgetRouteBuilder!(
        Builder(
            builder: (context) =>
                pageBuilder.widgetBuilder!(context, settings)),
      );
    } else {
      final transitionType = pageBuilder.transitionType ??
          MicroAppPreferences.config.pageTransitionType;

      if (transitionType != MicroPageTransitionType.platform) {
        return MicroPageTransition(
            settings:
                RouteSettings(arguments: routeArguments, name: routeName),
            pageBuilder: pageBuilder.widgetBuilder!,
            type: transitionType);
      } else {
        if (isIOS) {
          return CupertinoPageRoute(
            builder: (context) => pageBuilder.widgetBuilder!(context,
                RouteSettings(arguments: routeArguments, name: routeName)),
          );
        } else {
          return MaterialPageRoute(
            builder: (context) => pageBuilder.widgetBuilder!(context,
                RouteSettings(arguments: routeArguments, name: routeName)),
          );
        }
      }
    }
  } else {
    return null;
  }
}