decodeMap<T extends Map<String, V>?, V> function

T decodeMap<T extends Map<String, V>?, V>(
  1. dynamic raw,
  2. V decode(
    1. dynamic,
    2. String?
    ), {
  3. String? name,
})

Implementation

T decodeMap<T extends Map<String, V>?, V>(
    dynamic raw, V Function(dynamic, String?) decode,
    {String? name}) {
  if (raw is Map<String, dynamic>) {
    return raw.map((key, value) =>
        MapEntry(key, decode(value, name?.apply((n) => '$n.$key')))) as T;
  } else if (TypeCheck<T>().isNullable && raw == null) {
    return null as T;
  } else {
    throw CodecException.typeMismatch(T, raw.runtimeType, name);
  }
}