build method

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

未配置或未在 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);
  }
}