flutter_folder_gen 1.1.2 copy "flutter_folder_gen: ^1.1.2" to clipboard
flutter_folder_gen: ^1.1.2 copied to clipboard

A CLI tool to generate complete Flutter project structures for MVC, BLoC, GetX, and Provider patterns.

🏛️ Flutter Architect CLI #

A powerful Dart CLI tool that generates complete, production-ready Flutter project structures for your chosen architecture pattern in seconds.

✨ Supported Patterns #

Pattern Description Key packages
MVC Model-View-Controller http, shared_preferences
BLoC Business Logic Component flutter_bloc, equatable
GetX GetX state management get, get_storage
Provider Provider + GoRouter provider, go_router

🚀 Installation #

Option 1 — Global activation (pub.dev) #

dart pub global activate flutter_folder_gen

Option 2 — From source #

git clone https://github.com/yourname/flutter_folder_gen
cd flutter_folder_gen
dart pub global activate --source path .

📖 Usage #

flutter_folder_gen --interactive
# or simply:
flutter_folder_gen

Direct flags #

# Generate a BLoC project
flutter_folder_gen -p bloc -n my_app

# Generate a GetX project in a specific folder
flutter_folder_gen -p getx -n shop_app -o ./projects

# Generate an MVC project
flutter_folder_gen -p mvc -n todo_app

# Generate a Provider project
flutter_folder_gen -p provider -n weather_app

All options #

-p, --pattern     Architecture pattern: mvc | bloc | getx | provider
-n, --name        Project/feature name (snake_case, e.g. my_app)
-o, --output      Output directory (default: current directory)
-i, --interactive Run guided interactive setup
-h, --help        Show help
-v, --version     Show version

📁 Generated Structures #

MVC #

my_app/
├── lib/
│   ├── core/
│   │   ├── constants/app_constants.dart
│   │   ├── network/api_service.dart
│   │   ├── storage/local_storage.dart
│   │   ├── theme/app_theme.dart
│   │   └── utils/
│   │       ├── extensions.dart
│   │       └── validators.dart
│   ├── models/
│   │   └── user_model.dart
│   ├── views/
│   │   ├── home/
│   │   │   ├── home_view.dart
│   │   │   └── widgets/home_card.dart
│   │   ├── auth/login_view.dart
│   │   └── splash/splash_view.dart
│   ├── controllers/
│   │   ├── base_controller.dart
│   │   ├── home_controller.dart
│   │   └── auth_controller.dart
│   ├── repositories/
│   │   ├── base_repository.dart
│   │   └── user_repository.dart
│   ├── routes/app_routes.dart
│   └── main.dart
├── test/
│   ├── controllers/home_controller_test.dart
│   └── models/user_model_test.dart
├── assets/
│   ├── images/
│   └── icons/
├── pubspec.yaml
├── analysis_options.yaml
└── .gitignore

BLoC (Clean Architecture) #

my_app/
├── lib/
│   ├── core/
│   │   ├── constants/
│   │   ├── error/failures.dart
│   │   ├── network/api_service.dart
│   │   ├── theme/
│   │   ├── usecase/usecase.dart
│   │   └── utils/either.dart
│   ├── data/
│   │   ├── datasources/
│   │   │   ├── user_remote_datasource.dart
│   │   │   └── user_local_datasource.dart
│   │   ├── models/user_model.dart
│   │   └── repositories/user_repository_impl.dart
│   ├── domain/
│   │   ├── entities/user_entity.dart
│   │   ├── repositories/user_repository.dart          ← abstract
│   │   └── usecases/get_users_usecase.dart
│   ├── presentation/
│   │   ├── home/
│   │   │   ├── bloc/  (home_bloc, home_event, home_state)
│   │   │   ├── pages/home_page.dart
│   │   │   └── widgets/user_list_tile.dart
│   │   └── auth/
│   │       ├── bloc/  (auth_bloc, auth_event, auth_state)
│   │       └── pages/login_page.dart
│   ├── injection_container.dart
│   ├── routes/app_router.dart
│   └── main.dart
└── test/
    ├── blocs/home_bloc_test.dart
    └── usecases/get_users_usecase_test.dart

GetX #

my_app/
├── lib/
│   ├── core/
│   │   ├── constants/
│   │   ├── network/
│   │   ├── storage/storage_service.dart
│   │   ├── theme/
│   │   └── utils/snackbar_utils.dart
│   ├── data/
│   │   ├── models/user_model.dart
│   │   ├── providers/user_provider.dart
│   │   └── repositories/user_repository.dart
│   ├── modules/
│   │   ├── home/
│   │   │   ├── bindings/home_binding.dart
│   │   │   ├── controllers/home_controller.dart
│   │   │   └── views/
│   │   │       ├── home_view.dart
│   │   │       └── widgets/user_card.dart
│   │   ├── auth/
│   │   │   ├── bindings/auth_binding.dart
│   │   │   ├── controllers/auth_controller.dart
│   │   │   └── views/login_view.dart
│   │   └── splash/
│   │       ├── bindings/splash_binding.dart
│   │       ├── controllers/splash_controller.dart
│   │       └── views/splash_view.dart
│   ├── routes/
│   │   ├── app_pages.dart
│   │   └── app_routes.dart
│   └── main.dart

Provider #

my_app/
├── lib/
│   ├── core/
│   │   ├── constants/
│   │   ├── network/
│   │   ├── storage/prefs_service.dart
│   │   ├── theme/
│   │   └── utils/extensions.dart
│   ├── models/user_model.dart
│   ├── providers/
│   │   ├── auth_provider.dart
│   │   ├── theme_provider.dart
│   │   └── user_provider.dart
│   ├── repositories/user_repository.dart
│   ├── router/app_router.dart          ← GoRouter with auth redirect
│   ├── screens/
│   │   ├── home/
│   │   │   ├── home_screen.dart
│   │   │   └── widgets/user_list_item.dart
│   │   ├── auth/login_screen.dart
│   │   └── splash/splash_screen.dart
│   ├── app.dart                        ← MultiProvider root
│   └── main.dart
└── test/
    └── providers/user_provider_test.dart

🔧 After Generation #

cd my_app
flutter pub get
flutter run

🤝 Contributing #

Pull requests welcome! To add a new architecture pattern:

  1. Create lib/src/generators/your_pattern_generator.dart
  2. Extend BaseGenerator
  3. Register it in cli_runner.dart
  4. Add to pubspec.yaml executables section

📄 License #

MIT

3
likes
0
points
182
downloads

Publisher

unverified uploader

Weekly Downloads

A CLI tool to generate complete Flutter project structures for MVC, BLoC, GetX, and Provider patterns.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

ansi_styles, args, mason_logger, path

More

Packages that depend on flutter_folder_gen