deepMergeMapInmutable static method
Función que realiza una actualización profunda (deep merge) de mapas
Recibe dos mapas como parámetros:
target: El mapa que será actualizado y retornadosource: El mapa con los valores que se usarán para actualizar
La función actualiza recursivamente el mapa target con los valores de source.
Si ambos valores son mapas, se hace merge recursivo.
Si no, se reemplaza el valor directamente.
Implementation
static Map<String, dynamic> deepMergeMapInmutable(
Map<String, dynamic> target,
Map<String, dynamic> source,
) {
// Crear una copia profunda del target para no modificar el original
Map<String, dynamic> result = deepCopyMap(target);
source.forEach((key, sourceValue) {
if (result.containsKey(key)) {
final targetValue = result[key];
if (targetValue is Map<String, dynamic> &&
sourceValue is Map<String, dynamic>) {
// Hacer merge recursivo sin modificar valores existentes
result[key] = deepMergeMapInmutable(targetValue, sourceValue);
}
// Si el key existe, no hacer nada más (mantener valor original)
} else {
// Solo agregar si el key NO existe
result[key] = sourceValue;
}
});
return result;
}