merge static method
Recursively merges source into target and returns a new map.
On key collision, source wins; nested maps are merged.
Accepts any Map types (e.g. Map<String, Object> from typed JSON);
the result is normalized to Map<String, dynamic>.
Implementation
static Map<String, dynamic> merge(Map target, Map source) {
final result = <String, dynamic>{};
target.forEach((k, v) => result[k.toString()] = v);
source.forEach((k, v) {
final key = k.toString();
final existing = result[key];
if (existing is Map && v is Map) {
result[key] = merge(existing, v);
} else {
result[key] = v;
}
});
return result;
}