Skip to content

Commit 5a34b58

Browse files
committed
fix: strip non-nullable optional params in Dart/Flutter SDKs
This change updates the Dart and Flutter SDK templates to conditionally include non-nullable optional parameters in the request params map only when they are not null. Previously, all parameters were always included in the params map, which could lead to unnecessary null values being sent in API requests. This implementation matches the Python SDK behavior (templates/python/base/params.twig) where optional non-nullable parameters are checked with "if not None" before being added to api_params. Changes: - Modified templates/dart/base/utils.twig map_parameter macro - Modified templates/flutter/base/utils.twig map_parameter macro - Uses Dart's collection-if syntax for conditional parameter inclusion - Adds null assertion operator (!) for enum values when inside null check Example generated code: ```dart final Map<String, dynamic> apiParams = { 'requiredParam': requiredParam, if (optionalParam != null) 'optionalParam': optionalParam, }; ```
1 parent 1a7a3b8 commit 5a34b58

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

templates/dart/base/utils.twig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
{% macro map_parameter(parameters) %}
22
{% for parameter in parameters %}
3+
{% if not parameter.nullable and not parameter.required %}
4+
if ({{ parameter.name | caseCamel | overrideIdentifier }} != null) '{{ parameter.name }}': {{ parameter.name | caseCamel | overrideIdentifier }}{% if parameter.enumValues | length > 0 %}!{% endif %}{% if parameter.enumValues | length > 0 %}.value{% endif %},
5+
{% else %}
36
'{{ parameter.name }}': {{ parameter.name | caseCamel | overrideIdentifier }}{% if parameter.enumValues | length > 0 %}{% if not parameter.required %}?{% endif %}.value{% endif %},
7+
{% endif %}
48
{% endfor %}
59
{% endmacro %}
610

templates/flutter/base/utils.twig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
{%- macro map_parameter(parameters) -%}
22
{%- for parameter in parameters ~%}
3+
{% if not parameter.nullable and not parameter.required %}
4+
if ({{ parameter.name | caseCamel | overrideIdentifier }} != null) '{{ parameter.name }}': {{ parameter.name | caseCamel | overrideIdentifier }}{% if parameter.enumValues | length > 0 %}!{% endif %}{% if parameter.enumValues | length > 0 %}.value{% endif %},
5+
{% else %}
36
'{{ parameter.name }}': {{ parameter.name | caseCamel | overrideIdentifier }}{% if parameter.enumValues | length > 0 %}{% if not parameter.required %}?{% endif %}.value{% endif %},
7+
{% endif %}
48
{%- endfor ~%}
59
{%- endmacro ~%}
610

0 commit comments

Comments
 (0)