decodeEnum<T extends Enum> static method

T decodeEnum<T extends Enum>(
  1. dynamic value,
  2. List<T> values, [
  3. T? defaultValue
])

Decodes an enum from its name string.

value - The value to decode (will be cast to String). Can be null. defaultValue - Optional default value. If not provided, throws if value is null or doesn't match. Returns defaultValue if value is null or doesn't match (when provided), or throws otherwise.

Implementation

static T decodeEnum<T extends Enum>(
  dynamic value,
  List<T> values, [
  T? defaultValue,
]) {
  if (value == null) {
    if (defaultValue != null) return defaultValue;
    throw ArgumentError('Cannot decode null enum value');
  }
  final name = value as String;
  return values.firstWhere(
    (e) => e.name == name,
    orElse: () {
      if (defaultValue != null) return defaultValue;
      throw ArgumentError('No enum value found for "$name"');
    },
  );
}