generate static method
Generates the complete source code for the feature's DI file.
Implementation
static String generate(FeatureSchema schema) {
final camelName = FileWriter.toCamelCase(
FileWriter.toSnakeCase(schema.name),
);
final snakeName = FileWriter.toSnakeCase(schema.name);
final functionName = '${FileWriter.toLowerCamelCase(schema.name)}DI';
final locatorName = schema.globalConfig.config['locator_name'] ?? 'locator';
final locatorImport = schema.globalConfig.imports['locator'] ?? '';
final locatorImportLine = locatorImport.isNotEmpty
? "import '$locatorImport';"
: "";
final apiServiceRegistration = _generateApiServiceRegistration(
camelName,
locatorName,
);
final repositoryRegistration = _generateRepositoryRegistration(
camelName,
locatorName,
);
final useCaseRegistrations = _generateUseCaseRegistrations(
schema.functions,
camelName,
locatorName,
);
final cubitsRegistration = _generateCubitsRegistration(
schema.functions,
camelName,
locatorName,
);
final useCaseImports = schema.functions
.map(
(f) =>
"import 'domain/use_cases/${FileWriter.toSnakeCase(f.name)}_use_case.dart';",
)
.join('\n');
return '''$locatorImportLine
import 'data/data_sources/${snakeName}_api_service.dart';
import 'data/repositories/${snakeName}_repository_impl.dart';
import 'domain/repositories/${snakeName}_repository.dart';
$useCaseImports
import 'presentation/cubit/${snakeName}_cubit.dart';
Future<void> $functionName() async {
// DataSources
$apiServiceRegistration
// Repositories
$repositoryRegistration
// UseCases
$useCaseRegistrations
// Cubits
$cubitsRegistration
}
''';
}