[dart][dio] Nullable parameters & defaults for header/query parameters (#10147)

* respect the nullable flag for all parameters (except path params where this is not allowed)
* generate default values for header and query parameters that are not collections
* we can not handle default values for collection with built_value atm. (not const)
* we can not handle default values for form/body parameters atm. as those can be enums which we can not construct easily
This commit is contained in:
Peter Leibiger 2021-08-15 07:49:32 +02:00 committed by GitHub
parent 7d35e8dd9b
commit 5fe76c2453
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 9 deletions

View File

@ -44,10 +44,10 @@ class {{classname}} {
{{/isDeprecated}}
Future<Response<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}>> {{nickname}}({ {{#allParams}}{{#isPathParam}}
required {{{dataType}}} {{paramName}},{{/isPathParam}}{{#isQueryParam}}
{{#required}}required {{/required}}{{{dataType}}}{{^required}}?{{/required}} {{paramName}},{{/isQueryParam}}{{#isHeaderParam}}
{{#required}}required {{/required}}{{{dataType}}}{{^required}}?{{/required}} {{paramName}},{{/isHeaderParam}}{{#isBodyParam}}
{{#required}}required {{/required}}{{{dataType}}}{{^required}}?{{/required}} {{paramName}},{{/isBodyParam}}{{#isFormParam}}
{{#required}}required {{/required}}{{{dataType}}}{{^required}}?{{/required}} {{paramName}},{{/isFormParam}}{{/allParams}}
{{#required}}{{^isNullable}}required {{/isNullable}}{{/required}}{{{dataType}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}} {{paramName}}{{^isContainer}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}{{/isContainer}},{{/isQueryParam}}{{#isHeaderParam}}
{{#required}}{{^isNullable}}required {{/isNullable}}{{/required}}{{{dataType}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}} {{paramName}}{{^isContainer}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}{{/isContainer}},{{/isHeaderParam}}{{#isBodyParam}}
{{#required}}{{^isNullable}}required {{/isNullable}}{{/required}}{{{dataType}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}} {{paramName}},{{/isBodyParam}}{{#isFormParam}}
{{#required}}{{^isNullable}}required {{/isNullable}}{{/required}}{{{dataType}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}} {{paramName}},{{/isFormParam}}{{/allParams}}
CancelToken? cancelToken,
Map<String, dynamic>? headers,
Map<String, dynamic>? extra,

View File

@ -16,7 +16,7 @@
{{/hasFormParams}}
{{#bodyParam}}
{{#isPrimitiveType}}
_bodyData = {{paramName}}{{#isFile}}.finalize(){{/isFile}};
_bodyData = {{paramName}}{{#isFile}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}.finalize(){{/isFile}};
{{/isPrimitiveType}}
{{^isPrimitiveType}}
{{#isContainer}}

View File

@ -647,7 +647,7 @@ class FakeApi {
/// Returns a [Future]
/// Throws [DioError] if API call or serialization fails
Future<Response<void>> testBodyWithBinary({
required MultipartFile body,
MultipartFile? body,
CancelToken? cancelToken,
Map<String, dynamic>? headers,
Map<String, dynamic>? extra,
@ -672,7 +672,7 @@ class FakeApi {
dynamic _bodyData;
try {
_bodyData = body.finalize();
_bodyData = body?.finalize();
} catch(error, stackTrace) {
throw DioError(
@ -1065,9 +1065,9 @@ class FakeApi {
/// Throws [DioError] if API call or serialization fails
Future<Response<void>> testEnumParameters({
BuiltList<String>? enumHeaderStringArray,
String? enumHeaderString,
String? enumHeaderString = '-efg',
BuiltList<String>? enumQueryStringArray,
String? enumQueryString,
String? enumQueryString = '-efg',
int? enumQueryInteger,
double? enumQueryDouble,
BuiltList<String>? enumFormStringArray,