๐ฐ Flutter Bunny CLI
A powerful CLI tool for creating and managing Flutter applications with best practices and consistent architecture.
๐ Overview
Flutter Bunny is an opinionated CLI tool that helps you create, manage, and maintain Flutter applications with a focus on:
- Best practices โ Follow Flutter community best practices
- Consistent architecture โ Choose Clean Architecture, MVVM, or MVC
- Rapid development โ Generate components quickly
- Testing support โ Templates for unit, widget, and integration tests
- Project maintenance โ Keep your project organized and up-to-date
๐ Installation
Using Dart
dart pub global activate flutter_bunny 1.1.1
# Verify installation
flutter_bunny --version
Make sure the pub cache bin directory is in your PATH.
Using Homebrew (macOS)
brew tap demola234/homebrew-tap
brew install flutter_bunny
๐๏ธ Available Commands
Command | Description |
---|---|
create |
Create a new Flutter app interactively |
generate |
Generate screens, widgets, models, and more |
analyze |
Run static analysis |
build |
Run build_runner |
update |
Update Flutter Bunny CLI |
config |
Manage configuration settings |
doctor |
Check Flutter project health |
Run flutter_bunny help <command>
for detailed usage.
๐ ๏ธ Creating a New Flutter Project
flutter_bunny create app
You'll be guided through selecting:
- Project name and organization
- Architecture pattern (Clean Architecture, MVVM, MVC)
- State management (Provider, Riverpod, Bloc, etc.)
- Features and modules to include
Example with specific options:
flutter_bunny create app --name my_awesome_app --architecture clean_architecture --state-management riverpod
โจ Generating Models
You can now generate models interactively, from JSON samples, or with specific serialization methods.
Commands
# Start an interactive session
flutter_bunny generate model --name User
# Generate a model with specific serializer
flutter_bunny generate model --name Product --serializer json_serializable
# Generate a model from a JSON string
flutter_bunny generate model --name User --json '{"id": 1, "name": "John", "email": "john@example.com"}'
# Generate in non-interactive mode
flutter_bunny generate model --name Order --interactive false
Options
Option | Description |
---|---|
--name or -n |
(Required in non-interactive mode) Model name |
--directory or -d |
Directory to create model (default: lib/models ) |
--serializer or -s |
Serialization method: freezed , json_serializable (default), manual , or equatable |
--interactive or -i |
Use interactive mode (default: true) |
--json |
Provide a JSON sample or path to generate the model |
Interactive Mode
When enabled (--interactive true
):
- Prompt for model name
- Choose serialization method
- Enter JSON manually or load from file
- Detect nested models and generate them
- Suggest dependencies like
freezed_annotation
,json_serializable
Examples
Generate Model with Interactive Configuration
flutter_bunny generate model
Generate Product Model Using Freezed
flutter_bunny generate model --name Product --serializer freezed
Generate Model from JSON File
flutter_bunny generate model --name ApiResponse --json path/to/sample.json
Generate Multiple Models from Complex JSON
flutter_bunny generate model --name Order --json '{"id": 123, "items": [{"productId": 1, "quantity": 2}], "customer": {"id": 456, "name": "John Doe"}}'
Generated Output
- Model files created in
lib/models
- Correct serialization setup
- Imports and part files generated if needed
- Dependency suggestions provided
- Build runner commands shared
๐ Project Structure Examples
Clean Architecture
lib/
โโโ core/
โ โโโ errors/
โ โโโ network/
โ โโโ utils/
โ โโโ theme/
โโโ data/
โ โโโ datasources/
โ โโโ models/
โ โโโ repositories/
โโโ domain/
โ โโโ entities/
โ โโโ repositories/
โ โโโ usecases/
โโโ presentation/
โ โโโ blocs/
โ โโโ pages/
โ โโโ widgets/
โโโ main.dart
MVVM
lib/
โโโ models/
โโโ services/
โโโ view_models/
โโโ views/
โ โโโ screens/
โ โโโ widgets/
โโโ main.dart
MVC
lib/
โโโ models/
โโโ services/
โโโ views/
โ โโโ controllers/
โ โโโ models/
โ โโโ views/
โโโ main.dart
๐งฉ Supported State Management Options
- Provider
- Riverpod
- Bloc/Cubit
- GetX
- MobX
- Redux
๐งช Testing Utilities
Projects are scaffolded with testing support:
# Run all tests
flutter_bunny test
# Run unit tests only
flutter_bunny test --type unit
Includes:
- Unit Tests
- Widget Tests
- Integration Tests
๐ง Maintenance Commands
# Analyze the project
flutter_bunny analyze
# Check project health
flutter_bunny doctor
# Update CLI
flutter_bunny update
๐จ Configuration and Custom Templates
# Show current config
flutter_bunny config show
# Set defaults (e.g., architecture)
flutter_bunny config set default_architecture clean_architecture
You can also create custom templates under ~/.flutter_bunny/templates/
.
๐ค Contributing
Contributions are welcome! Please:
- Fork the repo
- Create a feature branch
- Submit a Pull Request
Check the CONTRIBUTING.md for details.
๐ License
Licensed under the MIT License.
๐ Support
- Open an Issue
- View the Official Documentation
Libraries
- flutter_bunny
- Flutter Bunny CLI ๐ฐ