2017-05-12 2 views

답변

2

GestureDetector 생성자의 onTapDown 인수로 GestureTapDownCallback 콜백을 제공 할 수 있습니다. GestureTapDownCallback은 전체 탭 위치를 포함하는 TapDownDetails 인수를 취합니다. 그런 다음 BuildContext.findRenderObjectRenderBox.globalToLocal을 사용하여 상대 좌표로 변환 할 수 있습니다 :

Offset _tapPosition; 

void _handleTapDown(TapDownDetails details) { 
    final RenderBox referenceBox = context.findRenderObject(); 
    setState(() { 
    _tapPosition = referenceBox.globalToLocal(details.globalPosition); 
    }); 
} 

@override 
Widget build(BuildContext context) { 
    return new GestureDetector(
    /* ... */ 
    onTapDown: _handleTapDown, 
); 
} 

당신의 onDoubleTap 처리기에서 가장 최근의 탭이 위치한 곳을 찾아 _tapPosition를 참조 할 수 있습니다.

예를 들면 InkWell을 참조하십시오.

+0

null이 아닌'onDoubleTap' 핸들러가있을 때'onTapDown' 이벤트가 발생하지 않습니다. 그것은 예상 된 행동입니까? – perlatus

+1

당신은 당신이 완전히 옳다는 것을 알고 있습니다 - 더블 탭의 위치를 ​​알아낼 방법이 없습니다. 나는이를 추적하기 위해 https://github.com/flutter/flutter/issues/10048을 제출했다. –