getInnerTypeByLevel function
String?
getInnerTypeByLevel(
- TypeAnnotation? returnType, {
- int level = 1,
- bool? useLexeme = false,
})
Implementation
String? getInnerTypeByLevel(
TypeAnnotation? returnType, {
int level = 1,
bool? useLexeme = false,
}) {
if (returnType is! NamedType) {
return null;
}
if (level <= 0) {
return returnType.toSource();
}
NamedType typeToInspect = returnType;
for (var i = 0; i < level; i++) {
final typeArguments = typeToInspect.typeArguments;
if (typeArguments == null || typeArguments.arguments.isEmpty) {
return null;
}
final innerType = typeArguments.arguments.first;
if (innerType is! NamedType) {
return innerType.toSource();
}
typeToInspect = innerType;
}
final result = switch (useLexeme) {
true => typeToInspect.name.lexeme,
_ => typeToInspect.toSource(),
};
print("[getInnerTypeByLevel] $result");
return result;
}