@@ -1830,4 +1830,91 @@ void main() {
1830
1830
tap.dispose ();
1831
1831
},
1832
1832
);
1833
+
1834
+ testGesture ('ScaleStartDetails should contain the correct PointerDeviceKind' , (
1835
+ GestureTester tester,
1836
+ ) {
1837
+ final ScaleGestureRecognizer scale = ScaleGestureRecognizer ();
1838
+
1839
+ bool didStartScale = false ;
1840
+ PointerDeviceKind ? updatedKind;
1841
+ scale.onStart = (ScaleStartDetails details) {
1842
+ didStartScale = true ;
1843
+ updatedKind = details.kind;
1844
+ };
1845
+ scale.onEnd = (ScaleEndDetails details) {
1846
+ didStartScale = false ;
1847
+ };
1848
+
1849
+ // The default kind is touch.
1850
+ // ignore: avoid_redundant_argument_values
1851
+ final TestPointer pointer1 = TestPointer (1 , PointerDeviceKind .touch);
1852
+ final PointerDownEvent down = pointer1.down (Offset .zero);
1853
+ scale.addPointer (down);
1854
+ tester.closeArena (1 );
1855
+ // One-finger panning
1856
+ tester.route (down);
1857
+ tester.route (pointer1.move (const Offset (20.0 , 30.0 )));
1858
+ expect (didStartScale, isTrue);
1859
+ expect (updatedKind, PointerDeviceKind .touch);
1860
+ tester.route (pointer1.up ());
1861
+ expect (didStartScale, isFalse);
1862
+
1863
+ final TestPointer pointer2 = TestPointer (2 , PointerDeviceKind .mouse);
1864
+ final PointerDownEvent down2 = pointer2.down (const Offset (10.0 , 20.0 ));
1865
+ scale.addPointer (down2);
1866
+ tester.closeArena (2 );
1867
+ tester.route (down2);
1868
+ tester.route (pointer2.move (const Offset (20.0 , 30.0 )));
1869
+ expect (didStartScale, isTrue);
1870
+ expect (updatedKind, PointerDeviceKind .mouse);
1871
+ tester.route (pointer2.up ());
1872
+ expect (didStartScale, isFalse);
1873
+
1874
+ final TestPointer pointer3 = TestPointer (3 , PointerDeviceKind .stylus);
1875
+ final PointerDownEvent down3 = pointer3.down (const Offset (10.0 , 20.0 ));
1876
+ scale.addPointer (down3);
1877
+ tester.closeArena (3 );
1878
+ tester.route (down3);
1879
+ tester.route (pointer3.move (const Offset (20.0 , 30.0 )));
1880
+ expect (didStartScale, isTrue);
1881
+ expect (updatedKind, PointerDeviceKind .stylus);
1882
+ tester.route (pointer3.up ());
1883
+ expect (didStartScale, isFalse);
1884
+
1885
+ final TestPointer pointer4 = TestPointer (4 , PointerDeviceKind .invertedStylus);
1886
+ final PointerDownEvent down4 = pointer4.down (const Offset (10.0 , 20.0 ));
1887
+ scale.addPointer (down4);
1888
+ tester.closeArena (4 );
1889
+ tester.route (down4);
1890
+ tester.route (pointer4.move (const Offset (20.0 , 30.0 )));
1891
+ expect (didStartScale, isTrue);
1892
+ expect (updatedKind, PointerDeviceKind .invertedStylus);
1893
+ tester.route (pointer4.up ());
1894
+ expect (didStartScale, isFalse);
1895
+
1896
+ final TestPointer pointer5 = TestPointer (5 , PointerDeviceKind .unknown);
1897
+ final PointerDownEvent down5 = pointer5.down (const Offset (10.0 , 20.0 ));
1898
+ scale.addPointer (down5);
1899
+ tester.closeArena (5 );
1900
+ tester.route (down5);
1901
+ tester.route (pointer5.move (const Offset (20.0 , 30.0 )));
1902
+ expect (didStartScale, isTrue);
1903
+ expect (updatedKind, PointerDeviceKind .unknown);
1904
+ tester.route (pointer5.up ());
1905
+ expect (didStartScale, isFalse);
1906
+
1907
+ final TestPointer pointer6 = TestPointer (6 , PointerDeviceKind .trackpad);
1908
+ final PointerPanZoomStartEvent down6 = pointer6.panZoomStart (const Offset (10.0 , 20.0 ));
1909
+ scale.addPointerPanZoom (down6);
1910
+ tester.closeArena (6 );
1911
+ tester.route (down6);
1912
+ tester.route (pointer6.panZoomUpdate (const Offset (20.0 , 30.0 )));
1913
+ expect (didStartScale, isTrue);
1914
+ expect (updatedKind, PointerDeviceKind .trackpad);
1915
+ tester.route (pointer6.panZoomEnd ());
1916
+ expect (didStartScale, isFalse);
1917
+
1918
+ scale.dispose ();
1919
+ });
1833
1920
}
0 commit comments