cloneMapTyped<K, V> method

  1. @override
Map<K, V> cloneMapTyped<K, V>(
  1. Map<K, V> source
)
override

Return a typed Map<K, V> with values deep-cloned.

Preserves the concrete Map implementation (e.g. LinkedHashMap, HashMap, UnmodifiableMapView). Throws UnsupportedTypedCloneException if a nested plain Map is encountered during typed cloning.

Implementation

@override
Map<K, V> cloneMapTyped<K, V>(Map<K, V> source) {
  final isUnmodifiable = source is UnmodifiableMapView<K, V>;
  final entries = source.entries.map(
    (e) => MapEntry<K, V>(e.key, _cloneValueTyped(e.value)),
  );
  final Map<K, V> cloned = switch (source) {
    LinkedHashMap<K, V>() => LinkedHashMap<K, V>.fromEntries(entries),
    HashMap<K, V>() => HashMap<K, V>.fromEntries(entries),
    _ => Map<K, V>.fromEntries(entries),
  };
  return isUnmodifiable ? UnmodifiableMapView<K, V>(cloned) : cloned;
}