build method
Generates the outputs for a given BuildStep.
Implementation
@override
Future<void> build(BuildStep buildStep) async {
// Only run for the synthetic input
if (buildStep.inputId.path != r'lib/$lib$') return;
final outputFileName =
options.config['output_file_name'] as String? ?? 'json_factory';
final outputPath = options.config['output_path'] as String? ?? 'lib';
final generator = JsonFactoryConfigGenerator(
outputFileName: outputFileName,
outputPath: outputPath,
);
final models = await generator.findAnnotatedModels(buildStep);
if (models.isEmpty) {
log.warning('No @jsonModel classes found');
return;
}
// Get package name for generating package imports
final packageName = buildStep.inputId.package;
final content = generator.generateFactoryFile(models, packageName);
// Use the configured output path and filename
final outputFilePath = '$outputPath/$outputFileName.dart';
final outputId = AssetId(
buildStep.inputId.package,
outputFilePath,
);
await buildStep.writeAsString(outputId, content);
}