generate method
Implementation
Route? generate(RouteSettings settings,
{bool? active, RouteFactory? onGenerate}) {
if (onGenerate != null) {
this.onGenerate = onGenerate;
}
String? path = settings.name;
if (path == null) {
return null;
}
active ??= Control.isInitialized;
if (!active) {
ControlScope.root.setup?.args.set(settings);
return null;
}
final args = ControlArgs.of(settings.arguments);
final controlRoute = parent.getRoute(path);
if (controlRoute != null) {
final mask = RouteMask.of(controlRoute._mask ?? controlRoute.identifier);
final params = mask.params(RouteMask.of(path));
args.add(value: controlRoute);
args.add(value: mask);
params.forEach((key, value) => args.add(key: key, value: value));
}
if (this.onGenerate == null) {
return controlRoute
?._copyWith(
identifier: path,
arguments: args.data,
)
.init(args: args.data);
}
return this.onGenerate?.call(RouteSettings(
name: path,
arguments: args.data,
));
}