clean_feature_gen 1.0.2 copy "clean_feature_gen: ^1.0.2" to clipboard
clean_feature_gen: ^1.0.2 copied to clipboard

Generate complete Clean Architecture features for Flutter — entities, models, BLoC/Cubit, repositories, DI, routes, and tests from YAML config.

example/example.dart

/// Example demonstrating how to use clean_feature_gen programmatically.
///
/// ## CLI Usage (most common)
///
/// ```bash
/// # Install globally
/// dart pub global activate clean_feature_gen
///
/// # Create a sample config file
/// clean_feature_gen init
///
/// # Generate from YAML config
/// clean_feature_gen generate --config feature_config.yaml
///
/// # Generate with inline flags
/// clean_feature_gen generate --name login --state-management bloc --has-api
/// ```
///
/// ## Programmatic Usage
///
/// You can also use the library directly in your Dart scripts:
library;

import 'package:clean_feature_gen/clean_feature_gen.dart';

Future<void> main() async {
  // 1. Define models with fields
  const userModel = ModelDefinition(
    name: 'User',
    fields: [
      FieldDefinition(name: 'id', type: 'int'),
      FieldDefinition(name: 'email', type: 'String'),
      FieldDefinition(name: 'fullName', type: 'String', jsonKey: 'full_name'),
      FieldDefinition(name: 'avatarUrl', type: 'String?', jsonKey: 'avatar_url'),
      FieldDefinition(name: 'isActive', type: 'bool', defaultValue: 'true'),
    ],
  );

  // 2. Define use cases
  const getUserProfile = UsecaseDefinition(
    name: 'GetUserProfile',
    returnType: 'User',
    params: [
      ParamDefinition(name: 'userId', type: 'int'),
    ],
  );

  const updateProfile = UsecaseDefinition(
    name: 'UpdateUserProfile',
    returnType: 'User',
    params: [
      ParamDefinition(name: 'user', type: 'User'),
    ],
  );

  const deleteProfile = UsecaseDefinition(
    name: 'DeleteUserProfile',
    returnType: 'void',
    params: [
      ParamDefinition(name: 'userId', type: 'int'),
    ],
  );

  // 3. Define screens
  const profileScreen = ScreenDefinition(
    name: 'UserProfileScreen',
    type: ScreenType.stateless,
    hasAppBar: true,
    hasLoadingState: true,
    hasErrorState: true,
  );

  const editScreen = ScreenDefinition(
    name: 'EditProfileScreen',
    type: ScreenType.stateful,
    hasPullToRefresh: false,
  );

  // 4. Create the feature config
  const config = FeatureConfig(
    name: 'user_profile',
    stateManagement: StateManagement.bloc,
    hasApi: true,
    apiBase: '/api/v1/users',
    generateTests: true,
    generateDi: true,
    generateRoutes: true,
    useJsonSerializable: true,
    hasLocalDataSource: false,
    models: [userModel],
    usecases: [getUserProfile, updateProfile, deleteProfile],
    screens: [profileScreen, editScreen],
  );

  // 5. Validate before generating
  final errors = config.validate();
  if (errors.isNotEmpty) {
    for (final error in errors) {
      print('Validation error: $error');
    }
    return;
  }

  // 6. Generate the feature
  final generator = FeatureGenerator(
    config: config,
    projectRoot: '.', // Current directory (must be a Flutter project root)
    overwrite: false,
    logger: const Logger(verbose: true),
  );

  await generator.generate();
}
7
likes
160
points
244
downloads

Publisher

verified publisherdipaktech.online

Weekly Downloads

Generate complete Clean Architecture features for Flutter — entities, models, BLoC/Cubit, repositories, DI, routes, and tests from YAML config.

Repository (GitHub)
View/report issues

Topics

#clean-architecture #bloc #code-generation #scaffolding #cli

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

args, path, recase, yaml

More

Packages that depend on clean_feature_gen