Flutter Easy Swagger Generator
A Flutter package that automatically generates Clean Architecture or MVVM code from Swagger/OpenAPI specifications.
This version adds a standalone CLI, improved model generation, multipart/form-data support, full HTTP method support, and enhanced developer experience.
Features
- Generates a complete Clean Architecture structure (
domain,infrastructure,presentation) or - Supports OpenAPI 3.0 features
- Generates models, repositories, and network layers
- Handles nested objects, arrays, and complex data types
- Supports multipart/form-data requests
- Handles all HTTP methods (
GET,POST,PUT,DELETE) - Automatically serializes header, query, and body parameters
- Generates BLoC, Provider, or Riverpod for state management
- Includes dependency injection setup with
get_it - Creates result builders for consistent state and error management
- Supports local files and remote URLs
- Automatically formats generated code according to Dart guidelines
Installation
Add this package to your pubspec.yaml:
dependencies:
flutter_easy_swagger_generator: ^1.0.4
## Usage
### CLI Usage
```bash
# Generate from a local file
dart run flutter_easy_swagger_generator path/to/swagger.json
# Generate from a remote URL
dart run flutter_easy_swagger_generator https://api.example.com/swagger.json
Dart API Usage
import 'package:flutter_easy_swagger_generator/flutter_easy_swagger_generator.dart';
void main() async {
// Generate code from a local Swagger file
await swaggerGenerator('path/to/swagger.json');
// Or generate from a remote Swagger URL
await swaggerGenerator('https://api.example.com/swagger.json');
}
Parameters
swaggerPath(String): Path or URL to the Swagger JSON file.category(String?, optional): Generate code only for a specific API path category.prefixesToRemove(List, optional): Remove specified prefixes from generated class/file names.
Clean Architecture Structure
lib/
├── app/
│ ├── domain/
│ │ ├── entities/
│ │ └── repositories/
│ ├── infrastructure/
│ │ ├── models/
│ │ ├── remote/
│ │ └── repositories_implementation/
│ ├── network/
│ │ └── routes/
│ ├── presentation/
│ │ ├── bloc/
│ │ ├── event/
│ │ ├── state/
│ │ ├── provider/
│ │ └── riverpod/
│ └── injection/
MVVM Structure
lib/
└── feature_name/
├── models/
│ ├── response_model.dart
│ ├── request/
│ │ ├── request_param.dart
│ │ └── ...
│
├── data/
│ ├── remote/
│ │ └── api_service.dart
│ ├── repositories/
│ │ ├── repository.dart
│ │ └── repository_impl.dart
│
├── viewmodels/
│ └── feature_view_model.dart
│
├── views/
│ ├── feature_view.dart
│ └── ...
Layer Features
Entity Generation
- Converts OpenAPI schemas into Dart classes
- Handles nested objects and arrays
- Supports null safety
Repository Generation
- Creates repository interfaces and implementations
- Supports CRUD operations and custom methods
Network Layer
- Generates API clients
- Handles authentication
- Supports all HTTP methods
- Correctly maps request and response types
Presentation Layer
- Generates code according to the selected state management type (BLoC, Provider, or Riverpod)
- Creates events, states, or notifier classes for UI
- Follows Flutter best practices
- Integrates state management with dependency injection
Dependency Injection
- Sets up service locators
- Configures module dependencies
Result Handling
- Generates result builders
- Provides consistent success/failure/loading handling
Code Formatting
- Auto-formats all generated files
- Maintains consistent Dart style
Contributing
Contributions are welcome! Please submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Libraries
- classes/components
- classes/contact
- classes/http_method_info
- classes/info
- classes/media_type
- classes/open_api_json
- classes/response
- classes/route_info
- classes/server
- classes/t_parameter
- classes/t_property
- classes/t_request_body
- enums/content_type
- enums/http_method_type
- flutter_easy_swagger_generator
- generator/application_generator/application_generator
- generator/class_content_generator/class_generator_helper
- generator/class_content_generator/class_serializer_generator
- generator/class_content_generator/components_generator
- generator/class_content_generator/entities/entity_class_generator
- generator/class_content_generator/entities/parametars_generator
- generator/class_content_generator/models/model_class_generator
- generator/domain_generator/entities_generator
- generator/domain_generator/repository_generator
- generator/enums_generator
- generator/infrastructure_generator/models_generator
- generator/infrastructure_generator/remote_generator
- generator/infrastructure_generator/repo_imp_generator
- generator/injection_generator/injection_generator
- generator/network_generator/network_generator
- generator/network_generator/routes_generator
- generator/presentation_generator/bloc/bloc_generator
- generator/presentation_generator/bloc/event_generator
- generator/presentation_generator/bloc/state_generator
- generator/presentation_generator/provider/provider_generator
- generator/presentation_generator/riverpod/riverpod_generator
- generator/result_builder_generator/result_builder_generator
- helpers/constants
- helpers/converters
- helpers/create_folder
- helpers/dart_type
- helpers/file_path
- helpers/file_writer
- helpers/formatter
- helpers/get_modules_names
- helpers/import_path
- helpers/imports
- helpers/printer
- helpers/utils