appRoute static method

Route appRoute(
  1. RouteSettings settings
)

Implementation

static cupertino.Route<dynamic> appRoute(cupertino.RouteSettings settings) {
  try {
    var widget = settings.name == null || settings.name == '/'
        ? initialScreen()
        : screens.firstWhere((routeItem) => routeItem[#name] == settings.name,
            orElse: () {
            return {#screen: () => null};
          })[#screen]?.call();
    if (widget == null) {
      throw NoRouteFoundError(settings.name, settings.arguments);
    }

    if (widget is! StatelessScreen &&
        widget is! StatefulScreen &&
        widget is! RoutableWidget) {
      throw NotManageableWidgetException(widget);
    }

    if (settings.arguments != null) {
      KareeRouter._lastArguments = settings.arguments;
    }
    return cupertino.PageRouteBuilder(
        settings: RouteSettings(
            name: KareeRouter.currentRoute,
            arguments: settings.arguments ?? KareeRouter._lastArguments),
        transitionDuration: Duration(milliseconds: 0),
        pageBuilder: (_, a1, a2) {
          // KareeRouter.currentContext = _;
          return widget;
        });
  } on NoRouteFoundError catch (e, st) {
    KareeRouter._lastArguments = [
      settings.name!,
      if (KareeRouter.currentRoute != null) KareeRouter.currentRoute!,
      if (settings.arguments != null) settings.arguments.toString()
    ];
    return cupertino.PageRouteBuilder(
        transitionDuration: Duration(milliseconds: 0),
        pageBuilder: (_, a1, a2) => KareeRouterErrorWidget(
            'No screen found with name ${settings.name}',
            st,
            KareeErrorCode.screenNotFound,
            KareeRouter._lastArguments));
  } on NotManageableWidgetException catch (ex, st) {
    KareeRouter._lastArguments = [
      ex.screen.toString(),
      settings.name!,
      if (KareeRouter.currentRoute != null) KareeRouter.currentRoute!,
      if (settings.arguments != null) settings.arguments.toString()
    ];
    return cupertino.PageRouteBuilder(
        transitionDuration: Duration(milliseconds: 0),
        pageBuilder: (_, a1, a2) => KareeRouterErrorWidget(ex.message, st,
            KareeErrorCode.notKareeScreen, KareeRouter._lastArguments));
  }
}