visitFieldDeclaration method
void
visitFieldDeclaration(
- FieldDeclaration node
)
override
Implementation
@override
void visitFieldDeclaration(FieldDeclaration node) {
if (dataType != null) return;
print("$fieldName $dataType: ${node.isStatic} ${node.fields.isConst}");
if (node.isStatic && node.fields.isConst) {
print("static const variables ${node.fields.variables}");
for (var variable in node.fields.variables) {
if (variable.name.lexeme != fieldName) {
continue;
}
// print("${variable.name.lexeme} ${fieldName}");
print(variable.toString());
var element = variable.declaredFragment;
print("element $element");
if (element != null) {
// 4. Get the Type
DartType type = element.element.type;
print(type); // Output: Set<String>
print(type.isDartCoreSet); // Output: true
// dataTypeNode = type;
dataType = type.toString();
isExists = true;
print("${dataType}");
return;
} else {
// 1. Check if there is an initializer
var initializer = variable.initializer;
// 2. Check if it is a Set/Map literal
if (initializer is SetOrMapLiteral) {
final result = getLiteralTypeInfo(initializer);
dataType = result.dataType;
dataTypeNode = result.dataTypeNode;
isExists = result.isExists;
if (isExists) {
return;
}
}
}
}
}
for (final variable in node.fields.variables) {
if (variable.name.lexeme == fieldName) {
dataTypeNode = node.fields.type;
dataType = dataTypeNode?.toSource();
isExists = true;
break;
}
}
super.visitFieldDeclaration(node);
}