fix: `mapEquals` to correctly compare maps with different keys and null values (#207)

Co-authored-by: Danilospano <d.spano@tandu.it>
diff --git a/lib/src/equatable_utils.dart b/lib/src/equatable_utils.dart
index 022aa79..c56ce62 100644
--- a/lib/src/equatable_utils.dart
+++ b/lib/src/equatable_utils.dart
@@ -49,7 +49,7 @@
   if (identical(a, b)) return true;
   if (a.length != b.length) return false;
   for (final key in a.keys) {
-    if (!objectsEquals(a[key], b[key])) return false;
+    if (!b.containsKey(key) || !objectsEquals(a[key], b[key])) return false;
   }
   return true;
 }
diff --git a/test/equatable_utils_test.dart b/test/equatable_utils_test.dart
index 1445dd7..678a991 100644
--- a/test/equatable_utils_test.dart
+++ b/test/equatable_utils_test.dart
@@ -244,6 +244,13 @@
       final map2 = {'a': 1, 'b': 2, 'c': 3};
       expect(mapEquals(map1, map2), isFalse);
     });
+
+    test('returns false for maps with different keys containing null values',
+        () {
+      expect(mapEquals({'x': null}, {'y': 42}), isFalse);
+      expect(mapEquals({'x': null}, {'y': null}), isFalse);
+      expect(mapEquals({'a': 1, 'b': null}, {'a': 1, 'c': null}), isFalse);
+    });
   });
 
   group('objectsEquals', () {