build method
未配置或未在 include 中指定入口文件时:报错并立即终止,不写入任何文件。
Implementation
@override
Future<void> build(BuildStep buildStep) async {
final outputs = await generateRouterTableContent(
buildStep,
allowedSplitModules: _splitModules,
defaultLoadMode: _defaultLoadMode,
);
if (outputs.isEmpty) {
_sawNonEntryFileInThisRun = true;
throw BuildException(_configError(buildStep.inputId.path));
}
if (_sawNonEntryFileInThisRun) {
throw BuildException(_configError(buildStep.inputId.path));
}
final package = buildStep.inputId.package;
final basePath = buildStep.inputId.path.replaceFirst(
RegExp(r'\.dart$'),
'',
);
for (final entry in outputs.entries) {
final key = entry.key;
final content = entry.value;
final path = key.isEmpty
? '$basePath$_outputSuffix'
: '${basePath}_$key$_outputSuffix';
await buildStep.writeAsString(AssetId(package, path), content);
}
}