Repository: flutter
Issue: Gesture detectors are unable to capture small, detailed gestures.
Labels: c: new feature,framework,a: quality,f: gestures,c: proposal,P3,a: gamedev,team-framework,triaged-framework

My app uses a GestureDetector's onPanStart, onPanUpdate and onPanEnd handlers to allow the user to draw on the screen. This worked great when I first developed the app in late 2018, but after recently updating Flutter and recompiling the app, I found that GestureDetector is much less sensitive to small movements. 

By adding an onPanDown handler, I found that onPanDown is being called as soon as the pointer touches the screen, but then a fairly large drag movement is required before onPanStart will be called, and before onPanUpdate will then start being called for every ensuing movement of the pointer. 

Because of how large of a movement is required before the gesture is considered a "pan", my app is no longer sensitive to small movements, and so users would not be able to draw small details as they previously could.

After digging into the Flutter code, the only solution I could find was to edit this file:

flutter\packages\flutter\lib\src\gestures\constants.dart

...to change the constant kTouchSlop from 18.0 to a lower number such as 4.0. 

This is a messy solution and would need to be redone each time I update the Flutter code. So, I'm wondering if there's a better alternative method to allow GestureDetector (or ImmediateMultiDragGestureRecognizer, for multitouch gestures) to require less movement before it begins registering pans, and so to allow small, detailed gestures to be captured?   

If not, I recommend adding the ability to change kTouchSlop on a case by case basis. Alternately, have the GestureDetector start reporting the gesture as soon as the pointer is down (rather than after it has already moved by kTouchSlop amount) if its dragStartBehavior is set to "down" rather than "start". (This is what I expected the behavior would be, but changing the dragStartBehavior to "down" seemed to make no difference.)

-------------------------------------
Flutter doctor -v

[√] Flutter (Channel beta, v1.5.4-hotfix.2, on Microsoft Windows [Version 10.0.17134.765], locale en-US)
    • Flutter version 1.5.4-hotfix.2 at D:\src\flutter
    • Framework revision 7a4c33425d (3 weeks ago), 2019-04-29 11:05:24 -0700
    • Engine revision 52c7a1e849
    • Dart version 2.3.0 (build 2.3.0-dev.0.5 a1668566e5)


[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at C:\Users\frogr\AppData\Local\Android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: D:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    • All Android licenses accepted.

[√] Android Studio (version 3.2)
    • Android Studio at D:\Program Files\Android\Android Studio
    • Flutter plugin version 30.0.1
    • Dart plugin version 181.5656
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[√] Connected device (1 available)
    • SAMSUNG SGH I337 • c65ac68a • android-arm • Android 5.0.1 (API 21)

• No issues found!