cast method
String
cast(
- DartType dartType,
- Element? parameterElement, {
- bool withNullability = true,
})
Implementation
String cast(DartType dartType, Element? parameterElement,
{bool withNullability = true}) {
if (dartType.isDartCoreBool) {
final booleanDeserializer = '($this as int) != 0';
if (dartType.isNullable && withNullability) {
// if the value is null, return null
// if the value is not null, interpret 1 as true and 0 as false
return '$this == null ? null : $booleanDeserializer';
} else {
return booleanDeserializer;
}
} else if (dartType.isEnumType) {
final typeString = dartType.getDisplayString(withNullability: false);
final enumDeserializer = '$typeString.values[$this as int]';
if (dartType.isNullable && withNullability) {
return '$this == null ? null : $enumDeserializer';
} else {
return enumDeserializer;
}
} else if (dartType.isDartCoreString ||
dartType.isDartCoreInt ||
dartType.isUint8List ||
dartType.isDartCoreDouble) {
final typeString = dartType.getDisplayString(
withNullability: withNullability,
);
return '$this as $typeString';
} else {
throw InvalidGenerationSourceError(
'Trying to convert unsupported type $dartType.',
todo: 'Consider adding a type converter.',
element: parameterElement,
);
}
}