merge method

Map<K, V> merge(
  1. Map<K, V> other, {
  2. V onConflict(
    1. V current,
    2. V other
    )?,
})

Merge with another map

Implementation

Map<K, V> merge(Map<K, V> other,
    {V Function(V current, V other)? onConflict}) {
  final merged = Map<K, V>.from(this);
  other.forEach((key, value) {
    if (merged.containsKey(key) && onConflict != null) {
      final currentValue = merged[key];
      if (currentValue != null) {
        merged[key] = onConflict(currentValue, value);
      } else {
        merged[key] = value;
      }
    } else {
      merged[key] = value;
    }
  });
  return merged;
}