generate
Generates files based on a schematic for organizing your project's structure.
With any generated schematic template, this generates simple di code, and tests to help you quickly expand your project.
This has the following schematic templates:
- screen
- service
- widget
Getting Started š
The generated code may depend on go_router, flutter_riverpod, riverpod, flutter_test (dev), or test (dev) packages.
- Each screen has a private class with navigation information. This class contains a GoRoute declaration from go_router package for the screen. In future, this class will also have methods to create a path for navigating to this screen using path and query parameters.
- The providers of service and controllers use flutter_riverpod and riverpod packages.
- The tests that are generated use flutter_test and test packages.
Table of Contents
How to use š
Command Line
mason make generate --schematic screen --name hello_world --di riverpod
Then add your methods in the service! (Optional and available only for service)
Variables for the Command Line āØ
Variable | Description | Default | Type |
---|---|---|---|
schematic | The schematic to generate | screen (screen, service, widget) | enum |
name | The name of the schematic | string | |
di | The di framework that will be used by components | riverpod (riverpod) | enum |
Config
mason make generate -c generate_config.json
{
"schematic": "screen", // Could be screen, service, or widget
"name": "hello world",
"di": "riverpod" // Could be riverpod
}
Variables for a Config āØ
Variable | Description | Type |
---|---|---|
schematic | The schematic to generate | enum |
name | The name of the schematic | string |
di | The di framework that will be used by components | enum |
Outputs š¦
Screen
Creates a new, screen definition in the given project with controllers, providers, state, and tests.
--schematic screen --name hello_world --di riverpod
āāā lib
ā āāā screens
ā āāā hello_world
ā āāā hello_world_controller.dart
ā āāā hello_world_provider.dart
ā āāā hello_world_screen.dart
ā āāā hello_world_state.dart
ā āāā hello_world.dart
āāā tests
ā āāā screens
ā āāā hello_world
ā āāā hello_world_screen_test.dart
āāā ...
Service
Creates a new, generic service class definition in the given project with provider, abstract class, and tests.
--schematic service --name hello_world --di riverpod
āāā lib
ā āāā services
ā āāā hello_world
ā āāā hello_world.dart
ā āāā hello_world_provider.dart
ā āāā hello_world_service.dart
ā āāā hello_world_service_impl.dart
āāā tests
ā āāā services
ā āāā hello_world
ā āāā hello_world_service_test.dart
āāā ...
Example of a generated Service
Widget
Creates a new, generic widget definition in the given project with its inherited theme (optional), and tests.
--schematic widget --name hello_world --di riverpod
āāā lib
ā āāā widgets
ā āāā hello_world
ā āāā hello_world_theme.dart
ā āāā hello_world.dart
āāā tests
ā āāā widgets
ā āāā hello_world
ā āāā hello_world_theme_test.dart
ā āāā hello_world_test.dart
āāā ...
Roadmap
- Support for go_router configs generation and updation when a screen is added
- Support for bloc as a di for screens or services
- Support for code generation for layer-first, or feature-first project structure.