generate method

  1. @override
Future<void> generate(
  1. ProjectContext context
)
override

Executes the plugin's code-generation and configuration logic.

Implementation

@override
Future<void> generate(ProjectContext context) async {
  final pubspecPath = '${context.projectPath}/pubspec.yaml';

  // 1. Add Hive dependencies
  Services.yamlService.addDependency(pubspecPath, 'hive', '^2.2.3');
  Services.yamlService.addDependency(pubspecPath, 'hive_flutter', '^1.1.0');

  // Add generator dependencies
  Services.yamlService.addDependency(pubspecPath, 'hive_generator', '^2.0.1', isDev: true);
  Services.yamlService.addDependency(pubspecPath, 'build_runner', '^2.4.8', isDev: true);

  // 2. Render Hive service template
  await Services.templateService.renderTemplate(
    templateSubPath: 'storage/hive_service.dart',
    targetPath: '${context.projectPath}/lib/core/services/hive_service.dart',
    replacements: {},
  );

  // 3. Register initialization logic in main.dart
  final currentImports = context.templateReplacements['STATE_MANAGEMENT_IMPORTS'] ?? '';
  context.templateReplacements['STATE_MANAGEMENT_IMPORTS'] =
      "${currentImports}import 'core/services/hive_service.dart';\n";

  final currentInit = context.templateReplacements['STATE_MANAGEMENT_INIT'] ?? '';
  context.templateReplacements['STATE_MANAGEMENT_INIT'] =
      "$currentInit\n  await HiveService().init();";
}