build method

  1. @override
Future<void> build(
  1. BuildStep buildStep
)

Generates the outputs for a given BuildStep.

Implementation

@override
Future<void> build(BuildStep buildStep) async {
  var targetId = buildStep.inputId.toString();
  if (targetId.contains('.vm_test.') ||
      targetId.contains('.node_test.') ||
      targetId.contains('.browser_test.')) {
    return;
  }
  LibraryElement inputLibrary = await buildStep.inputLibrary;

  // Create our adapter for the resolver
  final resolver = BuildRunnerLibraryResolver(buildStep.resolver);

  // Convert AssetId to FileId
  final inputId = buildStep.inputId.toFileId();
  final outputId = buildStep.inputId
    .changeExtension('.reflection.dart')
    .toFileId();

  List<LibraryElement> visibleLibraries =
      await buildStep.resolver.libraries.toList();
  List<WarningKind> suppressedWarnings = _computeSuppressedWarnings();

  String generatedSource = await GeneratorImplementation().buildMirrorLibrary(
    resolver,
    inputId,
    outputId,
    inputLibrary,
    visibleLibraries.cast(),
    true,
    suppressedWarnings,
  );

  await buildStep.writeAsString(
    buildStep.inputId.changeExtension('.reflection.dart'),
    generatedSource,
  );
}