enumValueByString<T> function

T enumValueByString <T>(
  1. List<T> values,
  2. String key
)

Returns enum value by string

Example:

enum Enum {
  one,
  two,
}

assert(enumValueByString(Enum.values, 'one'), Enum.one);

Implementation

T enumValueByString<T>(List<T> values, String key) {
  if (values == null || key == null) throw EnumValueInvalideParamsException();

  for (T item in values) {
    // Remove Enum name from enum item
    final String itemName = item.toString().replaceFirst(RegExp(r'.+(\.)'), '');

    if (itemName.toLowerCase() == key.toLowerCase()) {
      return item;
    }
  }

  return null;
}