티스토리 뷰

플러터 (Flutter)

[Flutter] touchSlop 변경하기

Dev Ttangkong 2023. 1. 8. 03:48

 

Touch Slop은 사용자가 스크롤을 하려는 건지 클릭하려 하는 건지 가로로 스크롤 또는 세로로 스크롤 하려는 것인지 정확하게 판단하기 위해 특정 픽셀을 최소로 이동해야 하는 거리를 뜻합니다.

 

안드로이드의 Touch Slop은 8입니다.
반면 플러터의 경우 18입니다.

(해당 이유는 플러터의 경우 안드로이드와 다르게 스크롤 드레그라고 판단되고 그냥 손을 때면 스크롤 활동 (IdleScrollActivity가 아니라 BallisticScrollActivity)이 활성화된 상태에서도 포인터 추적을 그만두어 또 다시 사용자의 제스처를 판단해야되기 때문에 발생하는 현상인 것 같습니다. 단순히 Touch Slop을 높이므로서 사용자의 실수를 줄인 것 같으나 HoldScrollActivity라는 스크롤 활동이 존재하고 사용되지만 상위 위젯에 PageView가 존재하면 무용지물이 됩니다.)

 

비교

 

touchSlop: 18

 

 

touchSlop: 3

 

 

소스 코드

MediaQuery(
    data: MediaQuery.of(context).copyWith(
        gestureSettings: DeviceGestureSettings(touchSlop: touchSlop), <-- 여기
    ),
    child: ...,
);