diffStorage function

List<StorageKeyChange> diffStorage(
  1. Map<String, dynamic> before,
  2. Map<String, dynamic> after
)

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