@@ -202,6 +202,7 @@ abstract class PointerEvent with Diagnosticable {
202202 /// Abstract const constructor. This constructor enables subclasses to provide
203203 /// const constructors so that they can be used in const expressions.
204204 const PointerEvent ({
205+ this .embedderId = 0 ,
205206 this .timeStamp = Duration .zero,
206207 this .pointer = 0 ,
207208 this .kind = PointerDeviceKind .touch,
@@ -232,6 +233,14 @@ abstract class PointerEvent with Diagnosticable {
232233 }) : localPosition = localPosition ?? position,
233234 localDelta = localDelta ?? delta;
234235
236+ /// Unique identifier that ties the [PointerEvent] to the embedder event that created it.
237+ ///
238+ /// No two pointer events can have the same [embedderId] on platforms that set it.
239+ /// This is different from [pointer] identifier - used for hit-testing,
240+ /// whereas [embedderId] is used to identify the platform event.
241+ ///
242+ /// On Android this is ID of the underlying [MotionEvent] (https://developer.android.com/reference/android/view/MotionEvent).
243+ final int embedderId;
235244
236245 /// Time of event dispatch, relative to an arbitrary timeline.
237246 final Duration timeStamp;
@@ -504,6 +513,7 @@ abstract class PointerEvent with Diagnosticable {
504513 properties.add (IntProperty ('platformData' , platformData, defaultValue: 0 , level: DiagnosticLevel .debug));
505514 properties.add (FlagProperty ('obscured' , value: obscured, ifTrue: 'obscured' , level: DiagnosticLevel .debug));
506515 properties.add (FlagProperty ('synthesized' , value: synthesized, ifTrue: 'synthesized' , level: DiagnosticLevel .debug));
516+ properties.add (IntProperty ('embedderId' , embedderId, defaultValue: 0 , level: DiagnosticLevel .debug));
507517 }
508518
509519 /// Returns a complete textual description of this event.
@@ -592,6 +602,7 @@ class PointerAddedEvent extends PointerEvent {
592602 double tilt = 0.0 ,
593603 Matrix4 transform,
594604 PointerAddedEvent original,
605+ int embedderId = 0 ,
595606 }) : super (
596607 timeStamp: timeStamp,
597608 kind: kind,
@@ -610,6 +621,7 @@ class PointerAddedEvent extends PointerEvent {
610621 tilt: tilt,
611622 transform: transform,
612623 original: original,
624+ embedderId: embedderId,
613625 );
614626
615627 @override
@@ -634,6 +646,7 @@ class PointerAddedEvent extends PointerEvent {
634646 tilt: tilt,
635647 transform: transform,
636648 original: original as PointerAddedEvent ?? this ,
649+ embedderId: embedderId,
637650 );
638651 }
639652}
@@ -660,6 +673,7 @@ class PointerRemovedEvent extends PointerEvent {
660673 double radiusMax = 0.0 ,
661674 Matrix4 transform,
662675 PointerRemovedEvent original,
676+ int embedderId = 0 ,
663677 }) : super (
664678 timeStamp: timeStamp,
665679 kind: kind,
@@ -675,6 +689,7 @@ class PointerRemovedEvent extends PointerEvent {
675689 radiusMax: radiusMax,
676690 transform: transform,
677691 original: original,
692+ embedderId: embedderId,
678693 );
679694
680695 @override
@@ -696,6 +711,7 @@ class PointerRemovedEvent extends PointerEvent {
696711 radiusMax: radiusMax,
697712 transform: transform,
698713 original: original as PointerRemovedEvent ?? this ,
714+ embedderId: embedderId,
699715 );
700716 }
701717}
@@ -738,6 +754,7 @@ class PointerHoverEvent extends PointerEvent {
738754 bool synthesized = false ,
739755 Matrix4 transform,
740756 PointerHoverEvent original,
757+ int embedderId = 0 ,
741758 }) : super (
742759 timeStamp: timeStamp,
743760 kind: kind,
@@ -764,6 +781,7 @@ class PointerHoverEvent extends PointerEvent {
764781 synthesized: synthesized,
765782 transform: transform,
766783 original: original,
784+ embedderId: embedderId,
767785 );
768786
769787 @override
@@ -801,6 +819,7 @@ class PointerHoverEvent extends PointerEvent {
801819 synthesized: synthesized,
802820 transform: transform,
803821 original: original as PointerHoverEvent ?? this ,
822+ embedderId: embedderId,
804823 );
805824 }
806825}
@@ -844,6 +863,7 @@ class PointerEnterEvent extends PointerEvent {
844863 bool synthesized = false ,
845864 Matrix4 transform,
846865 PointerEnterEvent original,
866+ int embedderId = 0 ,
847867 }) : super (
848868 timeStamp: timeStamp,
849869 kind: kind,
@@ -870,6 +890,7 @@ class PointerEnterEvent extends PointerEvent {
870890 synthesized: synthesized,
871891 transform: transform,
872892 original: original,
893+ embedderId: embedderId,
873894 );
874895
875896 /// Creates an enter event from a [PointerHoverEvent] .
@@ -947,6 +968,7 @@ class PointerEnterEvent extends PointerEvent {
947968 synthesized: synthesized,
948969 transform: transform,
949970 original: original as PointerEnterEvent ?? this ,
971+ embedderId: embedderId,
950972 );
951973 }
952974}
@@ -990,6 +1012,7 @@ class PointerExitEvent extends PointerEvent {
9901012 bool synthesized = false ,
9911013 Matrix4 transform,
9921014 PointerExitEvent original,
1015+ int embedderId = 0 ,
9931016 }) : super (
9941017 timeStamp: timeStamp,
9951018 kind: kind,
@@ -1016,6 +1039,7 @@ class PointerExitEvent extends PointerEvent {
10161039 synthesized: synthesized,
10171040 transform: transform,
10181041 original: original,
1042+ embedderId: embedderId,
10191043 );
10201044
10211045 /// Creates an exit event from a [PointerHoverEvent] .
@@ -1093,6 +1117,7 @@ class PointerExitEvent extends PointerEvent {
10931117 synthesized: synthesized,
10941118 transform: transform,
10951119 original: original as PointerExitEvent ?? this ,
1120+ embedderId: embedderId,
10961121 );
10971122 }
10981123}
@@ -1124,6 +1149,7 @@ class PointerDownEvent extends PointerEvent {
11241149 double tilt = 0.0 ,
11251150 Matrix4 transform,
11261151 PointerDownEvent original,
1152+ int embedderId = 0 ,
11271153 }) : super (
11281154 timeStamp: timeStamp,
11291155 pointer: pointer,
@@ -1148,6 +1174,7 @@ class PointerDownEvent extends PointerEvent {
11481174 tilt: tilt,
11491175 transform: transform,
11501176 original: original,
1177+ embedderId: embedderId,
11511178 );
11521179
11531180 @override
@@ -1177,6 +1204,7 @@ class PointerDownEvent extends PointerEvent {
11771204 tilt: tilt,
11781205 transform: transform,
11791206 original: original as PointerDownEvent ?? this ,
1207+ embedderId: embedderId,
11801208 );
11811209 }
11821210}
@@ -1218,6 +1246,7 @@ class PointerMoveEvent extends PointerEvent {
12181246 bool synthesized = false ,
12191247 Matrix4 transform,
12201248 PointerMoveEvent original,
1249+ int embedderId = 0 ,
12211250 }) : super (
12221251 timeStamp: timeStamp,
12231252 pointer: pointer,
@@ -1246,6 +1275,7 @@ class PointerMoveEvent extends PointerEvent {
12461275 synthesized: synthesized,
12471276 transform: transform,
12481277 original: original,
1278+ embedderId: embedderId,
12491279 );
12501280
12511281 @override
@@ -1286,6 +1316,7 @@ class PointerMoveEvent extends PointerEvent {
12861316 synthesized: synthesized,
12871317 transform: transform,
12881318 original: original as PointerMoveEvent ?? this ,
1319+ embedderId: embedderId,
12891320 );
12901321 }
12911322}
@@ -1320,6 +1351,7 @@ class PointerUpEvent extends PointerEvent {
13201351 double tilt = 0.0 ,
13211352 Matrix4 transform,
13221353 PointerUpEvent original,
1354+ int embedderId = 0 ,
13231355 }) : super (
13241356 timeStamp: timeStamp,
13251357 pointer: pointer,
@@ -1344,6 +1376,7 @@ class PointerUpEvent extends PointerEvent {
13441376 tilt: tilt,
13451377 transform: transform,
13461378 original: original,
1379+ embedderId: embedderId,
13471380 );
13481381
13491382 @override
@@ -1374,6 +1407,7 @@ class PointerUpEvent extends PointerEvent {
13741407 tilt: tilt,
13751408 transform: transform,
13761409 original: original as PointerUpEvent ?? this ,
1410+ embedderId: embedderId,
13771411 );
13781412 }
13791413}
@@ -1395,6 +1429,7 @@ abstract class PointerSignalEvent extends PointerEvent {
13951429 Offset localPosition,
13961430 Matrix4 transform,
13971431 PointerSignalEvent original,
1432+ int embedderId = 0 ,
13981433 }) : super (
13991434 timeStamp: timeStamp,
14001435 pointer: pointer,
@@ -1404,6 +1439,7 @@ abstract class PointerSignalEvent extends PointerEvent {
14041439 localPosition: localPosition,
14051440 transform: transform,
14061441 original: original,
1442+ embedderId: embedderId,
14071443 );
14081444}
14091445
@@ -1424,6 +1460,7 @@ class PointerScrollEvent extends PointerSignalEvent {
14241460 this .scrollDelta = Offset .zero,
14251461 Matrix4 transform,
14261462 PointerScrollEvent original,
1463+ int embedderId = 0 ,
14271464 }) : assert (timeStamp != null ),
14281465 assert (kind != null ),
14291466 assert (device != null ),
@@ -1437,6 +1474,7 @@ class PointerScrollEvent extends PointerSignalEvent {
14371474 localPosition: localPosition,
14381475 transform: transform,
14391476 original: original,
1477+ embedderId: embedderId,
14401478 );
14411479
14421480 /// The amount to scroll, in logical pixels.
@@ -1456,6 +1494,7 @@ class PointerScrollEvent extends PointerSignalEvent {
14561494 scrollDelta: scrollDelta,
14571495 transform: transform,
14581496 original: original as PointerScrollEvent ?? this ,
1497+ embedderId: embedderId,
14591498 );
14601499 }
14611500
@@ -1493,6 +1532,7 @@ class PointerCancelEvent extends PointerEvent {
14931532 double tilt = 0.0 ,
14941533 Matrix4 transform,
14951534 PointerCancelEvent original,
1535+ int embedderId = 0 ,
14961536 }) : super (
14971537 timeStamp: timeStamp,
14981538 pointer: pointer,
@@ -1517,6 +1557,7 @@ class PointerCancelEvent extends PointerEvent {
15171557 tilt: tilt,
15181558 transform: transform,
15191559 original: original,
1560+ embedderId: embedderId,
15201561 );
15211562
15221563 @override
@@ -1546,6 +1587,7 @@ class PointerCancelEvent extends PointerEvent {
15461587 tilt: tilt,
15471588 transform: transform,
15481589 original: original as PointerCancelEvent ?? this ,
1590+ embedderId: embedderId,
15491591 );
15501592 }
15511593}
0 commit comments