generator method
Generates the RouteFactory which builds a Route on request.
These routes are built using the NyRouterRoutes addRoute
method.
Implementation
RouteFactory generator() {
return (settings) {
final NyRouterRoute? route = _routeNameMappings[settings.name!];
if (route == null) return null;
ArgumentsWrapper? argsWrapper;
if (settings.arguments is ArgumentsWrapper) {
argsWrapper = settings.arguments as ArgumentsWrapper?;
} else {
argsWrapper = ArgumentsWrapper();
argsWrapper.baseArguments = NyArgument(settings.arguments);
}
if (argsWrapper == null) {
argsWrapper = ArgumentsWrapper();
}
final BaseArguments? baseArgs = argsWrapper.baseArguments;
return PageTransition(
child: StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
Widget widget = route.builder(context, baseArgs ?? route.defaultArgs);
if (widget is NyStatefulWidget && widget.controller != null) {
widget.controller!.context = context;
widget.controller!.construct(context);
}
return widget;
}),
type: argsWrapper.pageTransitionType ?? route.pageTransitionType,
settings: settings,
duration:
argsWrapper.transitionDuration ?? this.options.transitionDuration,
);
};
}