deepMerge method
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;
}