Flutter Gen CLI
A package CLI to generate components, pages, services and other files in Flutter projects in a fast and consistent way.
📦 Installation
Add the package to your Flutter project:
dart pub global activate flutter_gen_cli
📝 Usage
Setup
Create a flutter_gen_config.yaml file in the root of your project with the following content:
generators:
component:
description: "Generate a component"
prompts:
- type: input
name: name
message: "What's the name of the component?"
- type: input
name: path
message: "What's the path of the component?"
actions:
- type: add
path: "lib/components/{{snackCase path}}/{{snakeCase name}}.dart"
template: "templates/component.dart.hbs"
Generate
Run the following command in your project's root directory:
dart run flutter_gen_cli generate --generator component
The generator will ask you for the name of the component, the path of the component and the template of the component. It will then generate the component in the specified path with the specified template.
OBS: Responses must always be given in the snack_case pattern, for the helpers to work correctly
📝 Helpers
| Helper | Description |
|---|---|
{{pascalCase name}} |
Converts the name to PascalCase |
{{camelCase name}} |
Converts the name to camelCase |
{{snakeCase name}} |
Converts the name to snake_case |
📝 Templates
You can use the following templates:
import 'package:flutter/material.dart';
class {{pascalCase name}} extends StatelessWidget {
const {{pascalCase name}}({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
color: Colors.blue,
child: Center(
child: Text(
'{{title}}',
style: TextStyle(color: Colors.white),
),
),
);
}
}
The result will be:
import 'package:flutter/material.dart';
class MyComponent extends StatelessWidget {
const MyComponent({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
color: Colors.blue,
child: Center(
child: Text(
'my_component',
style: TextStyle(color: Colors.white),
),
),
);
}
}
## 📝 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.