gpt4 book ai didi

flutter - 如何在另一个代码生成器的顶部运行代码生成器?

转载 作者:行者123 更新时间:2023-12-03 02:38:49 25 4
gpt4 key购买 nike

使用 source_gen stack 来制作代码生成器,如何制作生成代码的生成器,该代码将作为另一个生成器的输入(更具体地说 json_serializable )?

例如,考虑:

class Example extends Generator {
@override
String generate(LibraryReader library, BuildStep buildStep) {
return '''
@JsonSerializable(nullable: false)
class Person {
final String firstName;
final String lastName;
final DateTime dateOfBirth;
Person({this.firstName, this.lastName, this.dateOfBirth});
factory Person.fromJson(Map<String, dynamic> json) => _PersonFromJson(json);
Map<String, dynamic> toJson() => _PersonToJson(this);
}
''';
}
}

这是一个代码生成器的例子,它输出代码然后需要发送到 json_serializable
我该怎么做才能做到 json_serializable在这里正确生成?

最佳答案

查看 build.yaml 配置文件文档以获取更多信息,但我认为您应该使用 applies_builders param这允许在定义的构建之后执行另一个构建。

该示例显示了一个生成 .tar.gz 文件的构建器,然后执行另一个将 .tar.gz 文件作为输入的构建

builders:
# The regular builder config, creates .tar.gz files.
regular_builder:
import: "package:my_package/builder.dart"
builder_factories: ["myBuilder"]
build_extensions: {".dart": [".tar.gz"]}
auto_apply: dependents
apply_builders: [":archive_extract_builder"]
post_process_builders:
# The post process builder config, extracts .tar.gz files.
extract_archive_builder:
import: "package:my_package/extract_archive_builder.dart"
builder_factory: "myExtractArchiveBuilder"
input_extensions: [".tar.gz"]

所以与 source_gen你应该为你的构建实现
applies_builders: ["source_gen|combining_builder", "json_serializable"]

并配置另一个构建器
json_serializable:
import: "package:json_serializable/builder.dart"
builder_factories: ["jsonSerializable"]
build_extensions: {".dart": ["json_serializable.g.part"]}
auto_apply: dependents
build_to: cache
applies_builders: ["source_gen|combining_builder"]

关于flutter - 如何在另一个代码生成器的顶部运行代码生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59503994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com