@@ -1717,7 +1717,7 @@ class _TransformedPointerUpEvent extends _TransformedPointerEvent with _CopyPoin
1717
1717
/// events in a widget tree.
1718
1718
/// * [PointerSignalResolver] , which provides an opt-in mechanism whereby
1719
1719
/// participating agents may disambiguate an event's target.
1720
- abstract class PointerSignalEvent extends PointerEvent {
1720
+ abstract class PointerSignalEvent extends PointerEvent with _RespondablePointerEvent {
1721
1721
/// Abstract const constructor. This constructor enables subclasses to provide
1722
1722
/// const constructors so that they can be used in const expressions.
1723
1723
const PointerSignalEvent ({
@@ -1731,6 +1731,27 @@ abstract class PointerSignalEvent extends PointerEvent {
1731
1731
});
1732
1732
}
1733
1733
1734
+ /// A function that implements the [PointerSignalEvent.respond] method.
1735
+ typedef RespondPointerEventCallback = void Function ({required bool allowPlatformDefault});
1736
+
1737
+ mixin _RespondablePointerEvent on PointerEvent {
1738
+ /// Sends a response to the native embedder for the [PointerSignalEvent] .
1739
+ ///
1740
+ /// The parameter [allowPlatformDefault] allows the platform to perform the
1741
+ /// default action associated with the native event when it's set to `true` .
1742
+ ///
1743
+ /// This method can be called any number of times, but once `allowPlatformDefault`
1744
+ /// is set to `true` , it can't be set to `false` again.
1745
+ ///
1746
+ /// The implementation of this method is configured through the `onRespond`
1747
+ /// parameter of the [PointerSignalEvent] constructor.
1748
+ ///
1749
+ /// See also [RespondPointerEventCallback] .
1750
+ void respond ({
1751
+ required bool allowPlatformDefault,
1752
+ }) {}
1753
+ }
1754
+
1734
1755
mixin _CopyPointerScrollEvent on PointerEvent {
1735
1756
/// The amount to scroll, in logical pixels.
1736
1757
Offset get scrollDelta;
@@ -1760,6 +1781,7 @@ mixin _CopyPointerScrollEvent on PointerEvent {
1760
1781
double ? tilt,
1761
1782
bool ? synthesized,
1762
1783
int ? embedderId,
1784
+ RespondPointerEventCallback ? onRespond,
1763
1785
}) {
1764
1786
return PointerScrollEvent (
1765
1787
viewId: viewId ?? this .viewId,
@@ -1769,6 +1791,7 @@ mixin _CopyPointerScrollEvent on PointerEvent {
1769
1791
position: position ?? this .position,
1770
1792
scrollDelta: scrollDelta,
1771
1793
embedderId: embedderId ?? this .embedderId,
1794
+ onRespond: onRespond ?? (this as PointerScrollEvent ).respond,
1772
1795
).transformed (transform);
1773
1796
}
1774
1797
}
@@ -1794,7 +1817,8 @@ class PointerScrollEvent extends PointerSignalEvent with _PointerEventDescriptio
1794
1817
super .position,
1795
1818
this .scrollDelta = Offset .zero,
1796
1819
super .embedderId,
1797
- });
1820
+ RespondPointerEventCallback ? onRespond,
1821
+ }) : _onRespond = onRespond;
1798
1822
1799
1823
@override
1800
1824
final Offset scrollDelta;
@@ -1812,6 +1836,15 @@ class PointerScrollEvent extends PointerSignalEvent with _PointerEventDescriptio
1812
1836
super .debugFillProperties (properties);
1813
1837
properties.add (DiagnosticsProperty <Offset >('scrollDelta' , scrollDelta));
1814
1838
}
1839
+
1840
+ final RespondPointerEventCallback ? _onRespond;
1841
+
1842
+ @override
1843
+ void respond ({required bool allowPlatformDefault}) {
1844
+ if (_onRespond != null ) {
1845
+ _onRespond !(allowPlatformDefault: allowPlatformDefault);
1846
+ }
1847
+ }
1815
1848
}
1816
1849
1817
1850
class _TransformedPointerScrollEvent extends _TransformedPointerEvent with _CopyPointerScrollEvent implements PointerScrollEvent {
@@ -1834,6 +1867,14 @@ class _TransformedPointerScrollEvent extends _TransformedPointerEvent with _Copy
1834
1867
super .debugFillProperties (properties);
1835
1868
properties.add (DiagnosticsProperty <Offset >('scrollDelta' , scrollDelta));
1836
1869
}
1870
+
1871
+ @override
1872
+ RespondPointerEventCallback ? get _onRespond => original._onRespond;
1873
+
1874
+ @override
1875
+ void respond ({required bool allowPlatformDefault}) {
1876
+ original.respond (allowPlatformDefault: allowPlatformDefault);
1877
+ }
1837
1878
}
1838
1879
1839
1880
mixin _CopyPointerScrollInertiaCancelEvent on PointerEvent {
@@ -1905,7 +1946,7 @@ class PointerScrollInertiaCancelEvent extends PointerSignalEvent with _PointerEv
1905
1946
}
1906
1947
}
1907
1948
1908
- class _TransformedPointerScrollInertiaCancelEvent extends _TransformedPointerEvent with _CopyPointerScrollInertiaCancelEvent implements PointerScrollInertiaCancelEvent {
1949
+ class _TransformedPointerScrollInertiaCancelEvent extends _TransformedPointerEvent with _CopyPointerScrollInertiaCancelEvent , _RespondablePointerEvent implements PointerScrollInertiaCancelEvent {
1909
1950
_TransformedPointerScrollInertiaCancelEvent (this .original, this .transform);
1910
1951
1911
1952
@override
@@ -1996,7 +2037,7 @@ class PointerScaleEvent extends PointerSignalEvent with _PointerEventDescription
1996
2037
}
1997
2038
}
1998
2039
1999
- class _TransformedPointerScaleEvent extends _TransformedPointerEvent with _CopyPointerScaleEvent implements PointerScaleEvent {
2040
+ class _TransformedPointerScaleEvent extends _TransformedPointerEvent with _CopyPointerScaleEvent , _RespondablePointerEvent implements PointerScaleEvent {
2000
2041
_TransformedPointerScaleEvent (this .original, this .transform);
2001
2042
2002
2043
@override
0 commit comments