我正在为我的Flutter项目做一些代码生成。我基本上想用source_gen重建一个完整的类。我使用SimpleElementVisitor来获取大部分数据。我没有问题获取字段,字段类型,方法名称和类名。
这就是我如何得到我的类名称:
@override
void visitConstructorElement(ConstructorElement element) {
final returnType = element.returnType.toString();
className = returnType.replaceFirst('*', '');
}
字符串
我想我可以得到我的第一个接口名称,例如像这样。
@override
void visitClassElement(ClassElement element) {
firstInterfaceName = element.interfaces.first;
}
型
但不知何故,visitClassElement函数根本没有被访问,我觉得。甚至打印语句也没有执行。其他函数工作正常。
另外,我如何才能得到一个方法体?请不要只是张贴任何ChatGPT的答案。我已经尝试过了。提前感谢!
1条答案
按热度按时间h43kikqp1#
您的visitClassElement方法不起作用,因为在ElementVisitor应该覆盖的元素列表中没有一个ClassElement。但是有一些方法、字段和构造函数会触发对应的方法visitMethodElement、visitFieldElement、visitConstructorElement。
但是如果你让你的ElementVisitor覆盖VisitationUnitElement的子元素,你可以从buildStep中获取,那么在它的子元素中有一个ClassElement,它肯定会被调用visitClassElement方法。下面是一个代码示例,它将允许调用visitClassElement方法-
字符串