byName<T extends Enum> static method
Creates a parser that matches enum values by their Enum.name property.
The input is stringified and trimmed. If the input contains a dot (e.g.,
Status.active), only the part after the last dot is used for matching.
Throws StateError if no matching enum value is found.
Implementation
static T Function(dynamic) byName<T extends Enum>(List<T> values) =>
(dynamic obj) {
if (obj is T) return obj;
final raw = obj.toString().trim();
final name = raw.contains('.') ? raw.split('.').last : raw;
try {
return values.firstWhere((e) => e.name == name);
} on StateError {
throw StateError('No enum value with that name: "$name"');
}
};