我正在为 Flutter 编写一个 build_runner 包。Flutter 中的一个常见模式是可组合性,其中自定义小部件由其他自定义小部件组成。例如,
@MyAnnotation()
class Foo extends StatelessWidget {
@override
Widget build() {
:
_Bar(),
:
}
}
@MyAnnotation()
class _Bar extends StatelessWidget {
:
}
@MyAnnotation
我想通过在我想要聚合的类(例如,上面)上方放置一个注释来编写一个带有 build_runner 的类,该类使用来自两个或多个类的特性。
我当前的生成器如下所示:
class SubclassGenerator extends GeneratorForAnnotation<Findable> {
@override
Future<String> generateForAnnotatedElement(
_element.Element element,
ConstantReader annotation,
BuildStep buildStep,
) {
:
}
}
因为每个注解都会调用生成器,所以除了最后一个之外''
的所有Future<String>
s 都会返回,这将返回聚合类,但我怎么知道它是最后一个注解?例如,是否有确定 build_runner 何时完成文件的机制?如果是这样,我可以等到解析完成并完成我所有的Future<String>
s. 那可能吗?