cast method

String cast(
  1. DartType dartType,
  2. Element? parameterElement, {
  3. 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,
    );
  }
}