deepMerge<K> static method

Map<K, dynamic> deepMerge<K>(
  1. Map<K, dynamic> target,
  2. Map<K, dynamic> source
)

Deep merges source into target.

Implementation

static Map<K, dynamic> deepMerge<K>(
  Map<K, dynamic> target,
  Map<K, dynamic> source,
) {
  final result = Map<K, dynamic>.from(target);
  source.forEach((key, value) {
    final current = result[key];
    if (current is Map && value is Map) {
      result[key] = deepMerge<dynamic>(
        Map<dynamic, dynamic>.from(current),
        Map<dynamic, dynamic>.from(value),
      );
    } else {
      result[key] = value;
    }
  });

  return result;
}