dartObjectToString function
String?
dartObjectToString(
- DartObject v
)
Implementation
String? dartObjectToString(DartObject v) {
var type = v.type;
if (v.isNull) return 'null';
if (v.toBoolValue() != null) {
return v.toBoolValue().toString();
}
if (v.toIntValue() != null) {
return v.toIntValue().toString();
}
if (v.toDoubleValue() != null) {
return v.toDoubleValue().toString();
}
if (v.toSymbolValue() != null) {
return '#${v.toSymbolValue()!}';
}
if (v.toTypeValue() != null) {
return v.toTypeValue()!.getDisplayString(withNullability: true);
}
if (v.toListValue() != null) {
return 'const [${v.toListValue()!.map(dartObjectToString).join(', ')}]';
}
if (v.toMapValue() != null) {
return 'const {${v.toMapValue()!.entries.map((entry) {
var k = dartObjectToString(entry.key!);
var v = dartObjectToString(entry.value!);
return '$k: $v';
}).join(', ')}}';
}
if (v.toStringValue() != null) {
return literalString(v.toStringValue()!)
.accept(DartEmitter(useNullSafetySyntax: true))
.toString();
}
if (type is InterfaceType && type.element is EnumElement) {
// Find the index of the enum, then find the member.
for (var field in type.element.fields) {
if (field.isEnumConstant && field.isStatic) {
var value = type.element.getField(field.name)!.computeConstantValue();
if (v is Enum && value is Enum) {
var v2 = v as Enum;
var value2 = value as Enum;
if (value2.name == v2.name) {
return '${type.element.displayName}.${field.name}';
}
} else {
if (value == v) {
return '${type.element.displayName}.${field.name}';
}
}
}
}
}
throw ArgumentError(v.toString());
}