0 purchases
swagger to flutter
📣 Build dart types from Swagger/OpenAPI schemas #
SwaggerDartCodeGenerator is a code generator that looks for *.swagger files and builds .swagger.dart files, based on the schema. Code generation based on Chopper and JsonAnnotation models and can be configured for your needs.
Overview #
In general case for each .swagger file three outputs will be created.
.dart generated by Swagger dart code generator, contains all models, requests, converters, etc.
[Since v1.2.0] .enums.dart generated by Swagger dart code generator, contains all enums and enums mappings.
.chopper.dart - generated by chopper.
.g.dart - generated by json_serializable.
Installation #
Add the following to your pubspec.yaml file to be able to do code generation:
dev_dependencies:
chopper_generator: ^3.0.5
json_annotation: ^3.0.1
json_serializable: ^3.4.1
swagger_dart_code_generator: any
copied to clipboard
The generated code uses the following packages in run-time:
dependencies:
chopper: ^3.0.3
copied to clipboard
Then run:
pub packages get
copied to clipboard
or
flutter packages get
copied to clipboard
Now SwaggerGenerator will generate the API files for you by running:
pub run build_runner build
copied to clipboard
or
flutter pub run build_runner build
copied to clipboard
Configuration #
Swagger generator offers some configuration options to generate code. All options should be included on build.yaml file on the root of the project:
targets:
$default:
builders:
swagger_dart_code_generator:
options:
# custom configuration options!
copied to clipboard
Option
Default value
Is required
Description
use_inheritance
true
false
Enables and disables extends keyword.
with_base_url
true
false
If this option is false, generator will ignore base url in swagger file.
use_required_attribute_for_headers
true
false
If this option is false, generator will not add @required attribute to headers.
with_converter
true
false
If option is true, combination of all mappings will be generated.
ignore_headers
false
false
If option is true, headers will not be generated.
use_path_for_request_names
false
false
If property == false, then method name == operationId ?? path+methodType. If true - only path+methodType.
enums_case_sensitive
true
false
If value is false, 'enumValue' will be defined like Enum.enumValue even it's json key equals 'ENUMVALUE'
use_default_null_for_lists
false
false
If option is true, default value for lists will be null, otherwise - []
build_only_models
false
false
If option is true, chopper classes will not be generated.
include_if_null
null
false
Enables or disables includeIfNull JsonAnnotation feature and sets value for it. See IncludeIfNull.
default_values_map
[]
false
Contains map of types and theirs default values. See DefaultValueMap.
response_override_value_map
[]
false
Contains map of responses and theirs overridden values. See ResponseOverrideValueMap.
input_folder
-
true
Path to folder with .swagger files (for ex. swagger_examples, or lib/swaggers).
output_folder
-
true
Path to output folder (for ex. lib/generated).
It's important to remember that, by default, build will follow Dart's package layout conventions, meaning that only some folders will be considered to parse the input files. So, if you want to reference files from a folder other than lib/, make sure you've included it on sources:
targets:
$default:
sources:
- lib/**
- swagger_examples/**
- swaggers/**
copied to clipboard
IncludeIfNull for model generation #
This option is used to add includeIfEmpty annotation for model fields. If option not enabled or empty - includeIfNull annotation will not added to fields. For mode details see official documentation Please see next example:
targets:
$default:
builders:
swagger_dart_code_generator:
options:
input_folder: 'lib/swaggers'
output_folder: 'lib/generated_code/'
include_if_null:
enabled: true
value: false
copied to clipboard
Default Value Map for model generation #
If you want to add defaultValue: attribute to fields with concrete type you can use default value map. Please see next example:
targets:
$default:
builders:
swagger_dart_code_generator:
options:
input_folder: 'lib/swaggers'
output_folder: 'lib/generated_code/'
default_values_map:
- type_name: int
default_value: '36'
- type_name: String
default_value: 'default'
- type_name: 'List<String>'
default_value: '[]'
copied to clipboard
Response Override Value Map for requests generation #
If you want to override response for concrete request, you can use response_override_value_map. For example:
targets:
$default:
builders:
swagger_dart_code_generator:
options:
input_folder: 'lib/swaggers'
output_folder: 'lib/generated_code/'
response_override_value_map:
- url: '/store/inventory'
method: get
overridden_value: 'List<dynamic>'
- url: '/news/latest'
method: put
overridden_value: 'MyPerfectType'
copied to clipboard
Check the examples to see how to use it in details.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.