【发布时间】:2021-07-03 10:59:10
【问题描述】:
我正在开发一个构建器包,并希望访问定义为超级约束的类名。第一次构建时,它不会存在,所以我猜source_gen 只是将其排除在分析之外
例如,考虑到我要求用户定义
@fireproof
class User extends _$User {
final UserBase data;
User({
required this.data,
required DocumentSnapshot snapshot,
}) : super(snapshot);
factory User.fromSnapshot(DocumentSnapshot snapshot) =>
_$UserFromSnapshot(snapshot);
}
如何获得尚未定义的类 _$User 的名称?我希望是动态的,所以即使用户决定将其命名为其他名称,我也可以适应该名称。
我已经尝试了元素上的大多数字段,但找不到任何可以给我的字段:
@override
FutureOr<String> generateForAnnotatedElement(
Element element,
ConstantReader annotation,
BuildStep buildStep,
) async {
final classElement = element as ClassElement;
classElement.supertype; // Object
classElement.displayName; // class User
// I want _$User somehow
}
也许答案涉及到 ast,但我对此并不是很有经验。
【问题讨论】: