0

我正在为 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. 那可能吗?

4

0 回答 0