1
zoomable_images plugin에 두 번 탭하여 확대/축소하려면 구현하려고하지만 GestureTapCallback은 탭 위치 정보를 제공하지 않습니다.어떻게 탭 위치 (GestureDetector)를 얻을 수 있습니까?
이상적으로 오프셋은 콜백에 의해 반환됩니다. 이것에 대한 또 다른 API가 있습니까?
zoomable_images plugin에 두 번 탭하여 확대/축소하려면 구현하려고하지만 GestureTapCallback은 탭 위치 정보를 제공하지 않습니다.어떻게 탭 위치 (GestureDetector)를 얻을 수 있습니까?
이상적으로 오프셋은 콜백에 의해 반환됩니다. 이것에 대한 또 다른 API가 있습니까?
GestureDetector
생성자의 onTapDown
인수로 GestureTapDownCallback
콜백을 제공 할 수 있습니다. GestureTapDownCallback
은 전체 탭 위치를 포함하는 TapDownDetails
인수를 취합니다. 그런 다음 BuildContext.findRenderObject
및 RenderBox.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
을 참조하십시오.
null이 아닌'onDoubleTap' 핸들러가있을 때'onTapDown' 이벤트가 발생하지 않습니다. 그것은 예상 된 행동입니까? – perlatus
당신은 당신이 완전히 옳다는 것을 알고 있습니다 - 더블 탭의 위치를 알아낼 방법이 없습니다. 나는이를 추적하기 위해 https://github.com/flutter/flutter/issues/10048을 제출했다. –