diff function

Map<String, dynamic> diff(
  1. Map<String, dynamic> old,
  2. Map<String, dynamic> now
)

Implementation

Map<String, dynamic> diff(Map<String, dynamic> old, Map<String, dynamic> now) {
  final delta = <String, dynamic>{};
  for (final entry in now.entries) {
    final k = entry.key;
    final newVal = entry.value;
    final oldVal = old[k];
    if (!deepEquals(oldVal, newVal)) {
      delta[k] = newVal;
    }
  }
  // Include removed keys (present in old, absent in now) as nulls so backend can delete.
  // If backend does not accept null-for-delete semantics, remove this block.
  for (final k in old.keys) {
    if (!now.containsKey(k)) {
      delta[k] = null; // mark deletion
    }
  }
  return delta;
}