deepMerge method
Recursively merges other into this map, returning a new Map.
For keys present in both maps with map values, the merge is recursive.
For all other keys, other's value takes precedence.
final a = {'x': 1, 'y': {'a': 1}};
final b = {'y': {'b': 2}, 'z': 3};
a.deepMerge(b);
// {'x': 1, 'y': {'a': 1, 'b': 2}, 'z': 3}
Implementation
Map<K, dynamic> deepMerge(Map<K, dynamic> other) {
final result = <K, dynamic>{};
for (final entry in entries) {
result[entry.key] = entry.value;
}
for (final entry in other.entries) {
if (result.containsKey(entry.key) && result[entry.key] is Map && entry.value is Map<dynamic, dynamic>) {
result[entry.key] = (result[entry.key] as Map).deepMerge(entry.value as Map<dynamic, dynamic>);
} else {
result[entry.key] = entry.value;
}
}
return result;
}