diff --git a/lib/src/generators/router_2/code_builder/root_router_builder.dart b/lib/src/generators/router_2/code_builder/root_router_builder.dart index 941db59..74bcb77 100644 --- a/lib/src/generators/router_2/code_builder/root_router_builder.dart +++ b/lib/src/generators/router_2/code_builder/root_router_builder.dart @@ -282,6 +282,20 @@ Expression getUrlParamAssignment(ParamConfig p) { } } +Expression getConstructorParamAssignment(ParamConfig p) { + if (p.isPathParam) { + return refer('data').property('pathParams').property(p.getterMethodName).call([ + literalString(p.paramName), + if (p.defaultValueCode != null && p.type.isNullable) refer(p.defaultValueCode!), + ]); + } else { + return refer('data').property('pathParams').property(p.getterMethodName).call([ + literalString(p.paramName), + if (p.defaultValueCode != null && p.type.isNullable) refer(p.defaultValueCode!), + ]); + } +} + Iterable buildRoutes(List routes, {Reference? parent}) => routes.map( (r) { diff --git a/lib/src/generators/router_common/models/route_config.dart b/lib/src/generators/router_common/models/route_config.dart index e5d4d22..7cd1686 100644 --- a/lib/src/generators/router_common/models/route_config.dart +++ b/lib/src/generators/router_common/models/route_config.dart @@ -1,6 +1,8 @@ import 'package:code_builder/code_builder.dart'; +import 'package:dart_style/dart_style.dart'; import '../../../../utils.dart'; +import '../../router_2/code_builder/root_router_builder.dart'; import 'importable_type.dart'; import 'route_parameter_config.dart'; import 'router_config.dart'; @@ -206,12 +208,11 @@ class RouteConfig { Iterable _extractViewConstructerParametersNames() { return parameters.map((param) { String getterName; + final emitter = DartEmitter(); if (param.isPathParam) { - getterName = - "data.pathParams['${param.paramName}'].${param.getterName}(${param.defaultValueCode != null ? '${param.defaultValueCode}' : ''})"; + getterName = getConstructorParamAssignment(param).code.accept(emitter).toString(); } else if (param.isQueryParam) { - getterName = - "data.queryParams['${param.paramName}'].${param.getterName}(${param.defaultValueCode != null ? '${param.defaultValueCode}' : ''})"; + getterName = getConstructorParamAssignment(param).code.accept(emitter).toString(); } else { getterName = "args.${param.name}"; }