visitClassDeclaration method
void
visitClassDeclaration(
- ClassDeclaration node
)
override
Implementation
@override
void visitClassDeclaration(ClassDeclaration node) {
// 检查是否extends TcmppFlutterEventChannel
final extendsClause = node.extendsClause;
if (extendsClause != null) {
final superclass = extendsClause.superclass.name2.toString();
if (superclass == 'TcmppFlutterEventChannel') {
// 遍历类的所有方法
for (final member in node.members) {
if (member is MethodDeclaration) {
// 查找EventConfig注解
for (final annotation in member.metadata) {
final annotationName = annotation.name.toString();
if (annotationName == 'EventConfig') {
// 解析注解参数
bool value = false;
final arguments = annotation.arguments;
if (arguments != null) {
for (final arg in arguments.arguments) {
if (arg is NamedExpression) {
if (arg.name.label.name == 'value') {
final expression = arg.expression;
if (expression is BooleanLiteral) {
value = expression.value;
}
}
}
}
}
final methodName = member.name.lexeme;
eventConfigs[methodName] = value;
}
}
}
}
}
}
super.visitClassDeclaration(node);
}