[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 {