decodeEnum<T extends Enum> static method
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"');
},
);
}