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