getEnum<T extends ProtobufEnumVariant?> method

T getEnum<T extends ProtobufEnumVariant?>(
  1. int fieldNumber,
  2. List<T> values, {
  3. T? defaultValue,
})

Implementation

T getEnum<T extends ProtobufEnumVariant?>(
  int fieldNumber,
  List<T> values, {
  T? defaultValue,
}) {
  final current = firstWhereNullable((e) => e.fieldNumber == fieldNumber);
  if (current == null) {
    if (null is T) return defaultValue ?? null as T;
    throw ProtocolBufferException(
      "Missing value for fieldNumber $fieldNumber",
    );
  }
  if (current.config.fieldType != ProtoFieldType.enumType) {
    throw ProtocolBufferException(
      "Unsupported field type for conversion as $T.",
    );
  }
  return JsonParser.valueAs(
    _toEnum(
      values.where((e) => e != null).toList().cast<ProtobufEnumVariant>(),
      current.value,
    ),
  );
}