build method
Generates the outputs for a given BuildStep.
Implementation
@override
Future<void> build(BuildStep buildStep) async {
final dartEntrypointId = buildStep.inputId;
final isAppEntrypoint = await _isAppEntryPoint(dartEntrypointId, buildStep);
if (!isAppEntrypoint) return;
final compilationSteps = <Future>[];
Dart2WasmBootstrapResult? dart2WasmResult;
for (final compiler in options.compilers) {
switch (compiler.compiler) {
case WebCompiler.DartDevc:
compilationSteps.add(
Future(() async {
try {
final usesWebHotReload = options.usesWebHotReload;
await bootstrapDdc(
buildStep,
nativeNullAssertions: options.nativeNullAssertions,
requiredAssets:
usesWebHotReload
? _ddcLibraryBundleSdkResources
: _ddcSdkResources,
usesWebHotReload: usesWebHotReload,
);
} on MissingModulesException catch (e) {
log.severe('$e');
}
}),
);
case WebCompiler.Dart2Js:
compilationSteps.add(
bootstrapDart2Js(
buildStep,
compiler.compilerArguments,
nativeNullAssertions: options.nativeNullAssertions,
onlyCompiler: options.compilers.length == 1,
entrypointExtension: compiler.extension,
),
);
case WebCompiler.Dart2Wasm:
compilationSteps.add(
Future(() async {
dart2WasmResult = await bootstrapDart2Wasm(
buildStep,
compiler.compilerArguments,
compiler.extension,
);
}),
);
}
}
await Future.wait(compilationSteps);
if (_generateLoader(buildStep.inputId, dart2WasmResult)
case (final id, final loader)?) {
await buildStep.writeAsString(id, loader);
}
}