尝试创建自定义构建器会导致非唯一输出错误

我正在尝试为我的Flutter项目创建自定义构建器。我想实现类似于built_value代码生成的东西。

首先,我在项目的根文件夹中创建了build.yaml

targets:
  $default:
    builders:
      app|db_builder:
        enabled: true

builders:
  db_builder:
    target: ":db_builder"
    import: "package:app/db/build/builder.dart"
    builder_factories: ["dbBuilder"]
    build_extensions: {".dart": [".db.g.part"]}
    auto_apply: dependents
    build_to: cache
    applies_builders: ["source_gen|combining_builder"]

然后在app/db/build/builder.dart上实现了dbBuilder工厂

import 'package:build/build.dart';
import 'package:source_gen/source_gen.dart';

import 'db_generator.dart';

Builder dbBuilder(BuilderOptions _) =>
    SharedPartBuilder([DBAccessGenerator()], 'built_value');

DBAccessGenerator是从Generator继承的空类

我的项目也包含built_value_generator。

在上述步骤之后,当运行flutter pub run build_runner build时,我得到了以下错误:

Both app:db_builder and built_value_generator:built_value may output
test/widget_test.built_value.g.part. Potential outputs must be unique across all builders.

为什么会发生这种情况?我见过built_value_generator的source code,它将构建扩展声明为build_extensions: {".dart": [".built_value.g.part"]},但我的声明不同,我使用的是另一个目标扩展。

转载请注明出处:http://www.xingnongyuan.com/article/20230522/1639956.html