snippet_gen 1.0.0 copy "snippet_gen: ^1.0.0" to clipboard
snippet_gen: ^1.0.0 copied to clipboard

A Dart CLI code generator for provider, bloc architecture, and JSON-to-Dart models with safe parsing and nested class support.

🚀 snippet_gen #

A lightweight Dart CLI tool to quickly generate:

  • ✅ Provider architecture (Controller + Provider + Repository + Models)
  • ✅ BLoC architecture (Bloc + Event + State + Repository + Models)
  • ✅ Dart models from JSON (with nested class support + safe parsing)

✨ Features #

  • 🔹 Generate full Provider-based backend structure
  • 🔹 Generate full BLoC-based architecture
  • 🔹 Generate Dart models from JSON
  • 🔹 Supports nested objects → nested classes
  • 🔹 Built-in support for safe parsing (ParsingHelper)
  • 🔹 Optional abstract repository generation
  • 🔹 Clean folder structure aligned with scalable apps

📦 Installation #

Add it locally or run directly:

dart run snippet_gen <command>

⚙️ Usage #

1️⃣ Generate Provider Resource #

dart run snippet_gen generate provider <EntityName>

Example:

dart run snippet_gen generate provider User

2️⃣ Generate Provider Resource with Abstract Repository #

dart run snippet_gen generate provider <EntityName> --abstract

Example:

dart run snippet_gen generate provider User --abstract

✔ Generates repository methods with TODOs instead of API implementation


3️⃣ Generate BLoC Resource #

dart run snippet_gen generate bloc <EntityName>

Example:

dart run snippet_gen generate bloc User

4️⃣ Generate BLoC Resource with Abstract Repository #

dart run snippet_gen generate bloc <EntityName> --abstract

5️⃣ Generate Model from JSON #

dart run snippet_gen model <json_file_path> <ClassName>

Example:

dart run snippet_gen model lib/model/user.json User

✔ Output:

  • Generates .dart file next to JSON file
  • Supports nested objects → multiple classes
  • Uses safe parsing via ParsingHelper

🧠 Example JSON #

{
  "user_id": "123",
  "phone": "999999999",
  "is_active": true,
  "hobbies": {
    "music": ["listening", "singing"]
  }
}

✅ Generated Output (Simplified) #

class User {
  final String? userId;
  final bool? isActive;
  final Hobbies? hobbies;
}
class Hobbies {
  final List<String>? music;
}

⚠️ Important Notes #

🔸 Argument Order Matters #

Correct:

dart run snippet_gen generate provider User --abstract

Incorrect:

dart run snippet_gen generate provider --abstract User ❌

🔸 ParsingHelper Dependency #

Generated models rely on your parsing helper:

import 'package:your_project/utils/parsing_helper.dart';

Make sure:

  • The file exists
  • intl package is added (if using DateTime parsing)
dependencies:
  intl: ^0.19.0

📁 Generated Structure #

Provider #

lib/backend/user/
├── user_controller.dart
├── user_provider.dart
├── user_repository.dart

Provider Models #

lib/backend/user/model
├── user_model.dart
├── create_user_request_dto.dart
├── update_user_request_dto.dart
├── user_response_dto.dart

BLoC #

lib/blocs/user/
├── user_bloc.dart
├── user_event.dart
├── user_state.dart
├── user_repository.dart

Bloc Models #

lib/bloc/user/model
├── user_model.dart
├── create_user_request_dto.dart
├── update_user_request_dto.dart
├── user_response_dto.dart

💬 Contributing #

PRs are welcome. Keep it simple, readable, and scalable.


📄 License #

MIT License

1
likes
140
points
11
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Dart CLI code generator for provider, bloc architecture, and JSON-to-Dart models with safe parsing and nested class support.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

intl, path

More

Packages that depend on snippet_gen