byName<T extends Enum> static method

T Function(dynamic) byName<T extends Enum>(
  1. List<T> values
)

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"');
      }
    };