diffStorage function
Diff of public storage maps. Returns only keys that changed.
Implementation
List<StorageKeyChange> diffStorage(
Map<String, dynamic> before,
Map<String, dynamic> after,
) {
final changes = <StorageKeyChange>[];
final allKeys = {...before.keys, ...after.keys};
for (final key in allKeys.toList()..sort()) {
final hadBefore = before.containsKey(key);
final hadAfter = after.containsKey(key);
if (!hadBefore && hadAfter) {
changes.add(
StorageKeyChange(key: key, change: 'added', after: after[key]),
);
} else if (hadBefore && !hadAfter) {
changes.add(
StorageKeyChange(key: key, change: 'removed', before: before[key]),
);
} else if (!_deepEquals(before[key], after[key])) {
changes.add(
StorageKeyChange(
key: key,
change: 'modified',
before: before[key],
after: after[key],
),
);
}
}
return changes;
}