merge static method

Map<String, dynamic> merge(
  1. Map target,
  2. Map source
)

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