deepMerge method

Map deepMerge(
  1. Map toMerge
)

Merges current Map with toMerge by key.

Implementation

Map deepMerge(Map toMerge) {
  var source = <K, dynamic>{...this};
  for (var key in toMerge.keys) {
    if (source.containsKey(key) && source[key] is Map) {
      if (toMerge[key] is Map) {
        source[key] = (source[key] as Map).deepMerge(toMerge[key]);
      } else {
        source[key] = (source[key] as Map).deepMerge({key: toMerge[key]});
      }
    } else if (source.containsKey(key) && toMerge.containsKey(key)) {
      source[key] = [source[key], toMerge[key]];
    } else {
      source[key] = toMerge[key];
    }
  }

  return source;
}