flutter_clean_arch_generator 1.0.1
flutter_clean_arch_generator: ^1.0.1 copied to clipboard
A Dart CLI tool that generates Flutter projects and features following the Clean Architecture pattern.
example/flutter_clean_arch_generator_example.dart
import 'package:flutter_clean_arch_generator/flutter_clean_arch_generator.dart';
Future<void> main() async {
print('=== Flutter Clean Architecture Generator Examples ===\n');
print('--- CLI Usage ---');
Cli.main(['--help']);
print('\n--- Programmatic API Usage ---');
final projectGenerator = ProjectGenerator(
projectName: 'my_app',
projectPath: '/tmp/my_app_example',
baseUrl: 'https://api.example.com',
apiVersion: 'api',
);
print('ProjectGenerator created for: ${projectGenerator.projectName}');
print('Output path: ${projectGenerator.projectPath}');
print('Base URL: ${projectGenerator.baseUrl}');
print('API version: ${projectGenerator.apiVersion}');
final featureConfig = FeatureConfig(
name: 'product',
entityFields: [
FeatureField(name: 'id', type: 'int'),
FeatureField(name: 'name', type: 'String'),
FeatureField(name: 'price', type: 'double', isNullable: true),
FeatureField(name: 'description', type: 'String', isNullable: true),
],
useCases: [
FeatureUseCase(
name: 'fetchProduct',
params: [],
returnType: 'Product',
returnsList: false,
hasParams: false,
),
FeatureUseCase(
name: 'fetchProducts',
params: [],
returnType: 'List<Product>',
returnsList: true,
hasParams: false,
),
],
hasLocalDataSource: true,
hasAuthDependency: true,
);
print('\nFeatureConfig created:');
print(' Name: ${featureConfig.name}');
print(' PascalCase: ${featureConfig.pascalCase}');
print(' CamelCase: ${featureConfig.camelCase}');
print(' SnakeCase: ${featureConfig.snakeCase}');
print(' Fields: ${featureConfig.entityFields.length}');
print(' Use cases: ${featureConfig.useCases.length}');
print(' Has local datasource: ${featureConfig.hasLocalDataSource}');
print(' Has auth dependency: ${featureConfig.hasAuthDependency}');
print('\nString utilities:');
print(' toPascalCase("user_profile") = ${toPascalCase("user_profile")}');
print(' toCamelCase("user_profile") = ${toCamelCase("user_profile")}');
print(' toSnakeCase("UserProfile") = ${toSnakeCase("UserProfile")}');
print(' toKebabCase("UserProfile") = ${toKebabCase("UserProfile")}');
print(' toCapitalized("hello world") = ${toCapitalized("hello world")}');
print(' normalizeFeatureName("Hello-World") = ${normalizeFeatureName("Hello-World")}');
print(' joinPath("lib", "features") = ${joinPath("lib", "features")}');
}