enumByName<T extends Enum> method

T? enumByName<T extends Enum>(
  1. String key,
  2. List<T> values
)

an enum value by its name, in any case

Implementation

T? enumByName<T extends Enum>(String key, List<T> values) {
  String? value = raw(key);
  if (value == null) return null;
  String name = value.toLowerCase();
  for (T item in values) {
    if (item.name.toLowerCase() == name) return item;
  }
  List<String> names = <String>[];
  for (T item in values) {
    names.add(item.name);
  }
  return _invalid(key, 'one of ${names.join(', ')}', value);
}