match<T> function

T match<T>(
  1. dynamic value,
  2. Map<dynamic, T> values(), {
  3. T? defaultValue,
})

Match a value from a Map of data. Returns defaultValue if no match is found, or throws if no default provided.

Implementation

T match<T>(
  dynamic value,
  Map<dynamic, T> Function() values, {
  T? defaultValue,
}) {
  if (value == null) {
    if (defaultValue != null) return defaultValue;
    throw ArgumentError(
      'Value cannot be null when no defaultValue is provided',
    );
  }

  final valuesMeta = values();

  if (valuesMeta.containsKey(value)) {
    return valuesMeta[value] as T;
  }

  NyLogger.error('The value "$value" does not match any values provided');
  if (defaultValue != null) {
    return defaultValue;
  }
  throw ArgumentError('The value "$value" does not match any values provided');
}