[palette_generator] Fix dynamic calls due to operator == (#744)

diff --git a/packages/palette_generator/CHANGELOG.md b/packages/palette_generator/CHANGELOG.md
index b18d741..fa1c790 100644
--- a/packages/palette_generator/CHANGELOG.md
+++ b/packages/palette_generator/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.3
+
+* Avoids dynamic calls in equality checks.
+
 ## 0.3.2
 
 * Fix typos
diff --git a/packages/palette_generator/lib/palette_generator.dart b/packages/palette_generator/lib/palette_generator.dart
index 7f9f393..e155d2b 100644
--- a/packages/palette_generator/lib/palette_generator.dart
+++ b/packages/palette_generator/lib/palette_generator.dart
@@ -619,8 +619,9 @@
   }
 
   @override
-  bool operator ==(dynamic other) {
-    return minimumSaturation == other.minimumSaturation &&
+  bool operator ==(Object other) {
+    return other is PaletteTarget &&
+        minimumSaturation == other.minimumSaturation &&
         targetSaturation == other.targetSaturation &&
         maximumSaturation == other.maximumSaturation &&
         minimumLightness == other.minimumLightness &&
@@ -856,8 +857,10 @@
   }
 
   @override
-  bool operator ==(dynamic other) {
-    return color == other.color && population == other.population;
+  bool operator ==(Object other) {
+    return other is PaletteColor &&
+        color == other.color &&
+        population == other.population;
   }
 }
 
diff --git a/packages/palette_generator/pubspec.yaml b/packages/palette_generator/pubspec.yaml
index ba054e2..bd3d2e0 100644
--- a/packages/palette_generator/pubspec.yaml
+++ b/packages/palette_generator/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter package for generating palette colors from a source image.
 repository: https://github.com/flutter/packages/tree/main/packages/palette_generator
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+palette_generator%22
-version: 0.3.2
+version: 0.3.3
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/palette_generator/test/palette_generator_test.dart b/packages/palette_generator/test/palette_generator_test.dart
index 024b6c3..37118dd 100644
--- a/packages/palette_generator/test/palette_generator_test.dart
+++ b/packages/palette_generator/test/palette_generator_test.dart
@@ -402,6 +402,24 @@
     expect(palette.paletteColors[0].color,
         within<Color>(distance: 8, from: const Color(0xff0000ff)));
   });
+
+  test('PaletteColor == does not crash on invalid comparisons', () {
+    final PaletteColor paletteColorA = PaletteColor(const Color(0xFFFFFFFF), 1);
+    final PaletteColor paletteColorB = PaletteColor(const Color(0xFFFFFFFF), 1);
+    final Object object = Object();
+
+    expect(paletteColorA == paletteColorB, true);
+    expect(paletteColorA == object, false);
+  });
+
+  test('PaletteTarget == does not crash on invalid comparisons', () {
+    final PaletteTarget paletteTargetA = PaletteTarget();
+    final PaletteTarget paletteTargetB = PaletteTarget();
+    final Object object = Object();
+
+    expect(paletteTargetA == paletteTargetB, true);
+    expect(paletteTargetA == object, false);
+  });
 }
 
 Future<PaletteGenerator> _computeFromByteData(EncodedImage encodedImage) async {