appRoute static method
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));
}
}