From c8a4c8b8a7011b697fce8441b28ae6c3cc32bb12 Mon Sep 17 00:00:00 2001 From: Tong Mu Date: Thu, 21 Jul 2022 10:37:04 -0700 Subject: [PATCH] Pointer events: Allow hover events from trackpad (#108116) --- packages/flutter/lib/src/gestures/events.dart | 9 ++++----- packages/flutter/test/gestures/events_test.dart | 11 +++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/flutter/lib/src/gestures/events.dart b/packages/flutter/lib/src/gestures/events.dart index adeeee4834c..9dc764ae7b7 100644 --- a/packages/flutter/lib/src/gestures/events.dart +++ b/packages/flutter/lib/src/gestures/events.dart @@ -1035,10 +1035,7 @@ class PointerHoverEvent extends PointerEvent with _PointerEventDescription, _Cop super.tilt, super.synthesized, super.embedderId, - }) : // Dart doesn't support comparing enums with == in const contexts yet. - // https://github.com/dart-lang/language/issues/1811 - assert(!identical(kind, PointerDeviceKind.trackpad)), - super( + }) : super( down: false, pressure: 0.0, ); @@ -1156,7 +1153,9 @@ class PointerEnterEvent extends PointerEvent with _PointerEventDescription, _Cop super.down, super.synthesized, super.embedderId, - }) : assert(!identical(kind, PointerDeviceKind.trackpad)), + }) : // Dart doesn't support comparing enums with == in const contexts yet. + // https://github.com/dart-lang/language/issues/1811 + assert(!identical(kind, PointerDeviceKind.trackpad)), super( pressure: 0.0, ); diff --git a/packages/flutter/test/gestures/events_test.dart b/packages/flutter/test/gestures/events_test.dart index 09ac8a00d9d..c81cce29756 100644 --- a/packages/flutter/test/gestures/events_test.dart +++ b/packages/flutter/test/gestures/events_test.dart @@ -844,6 +844,17 @@ void main() { expect(event.synthesized, empty.synthesized); }); }); + + test('Ensure certain event types are allowed', () { + // Regression test for https://github.com/flutter/flutter/issues/107962 + expect(const PointerHoverEvent(kind: PointerDeviceKind.trackpad), isNotNull); + + // The test passes if it compiles. + }); + + test('Ensure certain event types are not allowed', () { + expect(() => PointerDownEvent(kind: PointerDeviceKind.trackpad), throwsAssertionError); + }); } void _expectTransformedEvent({