unknownRoute method
Generates the RouteFactory for unknown routes.
Implementation
RouteFactory unknownRoute({
Widget Function(BuildContext context, Widget widget)? builder,
}) {
return (RouteSettings settings) {
if (settings.name == null) return null;
final parsed = _parseRouteSettings(settings);
String routeName = parsed.routeName;
final ArgumentsWrapper argumentsWrapper = parsed.arguments;
final NyArgument? baseArgs = argumentsWrapper.baseArguments;
final NyQueryParameters? queryParameters =
argumentsWrapper.queryParameters;
if (_routeUnknownMappings.isEmpty) {
return null;
}
final NyRouterRoute originalRoute =
_routeUnknownMappings.entries.first.value;
originalRoute.pageTransitionSettings ??= const PageTransitionSettings();
if (Nylo.instance.onDeepLinkAction != null) {
Nylo.instance.onDeepLinkAction!(routeName, queryParameters?.data);
}
PageTransitionType? pageTransitionType;
if (originalRoute.pageTransitionType != null) {
pageTransitionType = originalRoute.pageTransitionType;
}
if (originalRoute.getTransitionType != null) {
pageTransitionType =
originalRoute.getTransitionType?.pageTransitionType;
}
if (argumentsWrapper.pageTransitionType != null) {
pageTransitionType = argumentsWrapper.pageTransitionType;
}
return PageTransition(
child: StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
if (builder != null) {
Widget widget = originalRoute.builder(
context,
baseArgs ?? originalRoute.defaultArgs,
queryParameters ?? originalRoute.queryParameters,
);
return builder(context, widget);
}
return originalRoute.builder(
context,
baseArgs ?? originalRoute.defaultArgs,
queryParameters ?? originalRoute.queryParameters,
);
},
),
type: pageTransitionType ?? PageTransitionType.rightToLeft,
settings: settings,
duration: _getPageTransitionDuration(originalRoute, argumentsWrapper),
alignment: _getPageTransitionAlignment(originalRoute, argumentsWrapper),
reverseDuration: _getPageTransitionReversedDuration(
originalRoute,
argumentsWrapper,
),
childCurrent: _getPageTransitionChildCurrent(
originalRoute,
argumentsWrapper,
),
curve: _getPageTransitionCurve(originalRoute, argumentsWrapper),
ctx: _getPageTransitionContext(originalRoute, argumentsWrapper),
inheritTheme: _getPageTransitionInheritTheme(
originalRoute,
argumentsWrapper,
),
fullscreenDialog: _getPageTransitionFullscreenDialog(
originalRoute,
argumentsWrapper,
),
opaque: _getPageTransitionOpaque(originalRoute, argumentsWrapper),
);
};
}