getEnum<T extends ProtoEnumVariant?> method
T
getEnum<
T extends ProtoEnumVariant?>( - int fieldNumber,
- List<T> values, {
- T? defaultValue,
})
Implementation
T getEnum<T extends ProtoEnumVariant?>(
int fieldNumber,
List<T> values, {
T? defaultValue,
}) {
final defaultValues = values.whereType<ProtoEnumVariant>().toList();
final current = getTagNumberField(fieldNumber);
if (current == null) {
if (defaultValue != null) return defaultValue;
if (null is T) return null as T;
if (syntax.isV3) {
return defaultValues.firstWhere(
(e) => e.value == 0,
orElse:
() =>
throw ProtoException(
"Missing value for fieldNumber $fieldNumber",
),
)
as T;
}
throw ProtoException("Missing value for fieldNumber $fieldNumber");
}
if (current.config.fieldType != ProtoFieldType.enumType) {
throw ProtoException("Unsupported field type for conversion as $T.");
}
return JsonParser.valueAs(_toEnum(defaultValues, current.value));
}