Flutter 在InteractiveViewer中使用GestureDetector

Flutter 在InteractiveViewer中使用GestureDetector,flutter,dart,widget,Flutter,Dart,Widget,是否可以在InteractiveViewer中使用GestureDetector(特别是onTapUp手势) 我知道InteractiveViewer本身使用一个GestureDetector,并覆盖onScaleEnd、onScaleStart和onScaleUpdate方法来实现平移。但是,onTapUp并没有被覆盖,这让我认为有可能使用它。我做了一些深入的研究,在for the toScene()方法中发现了这一点: 返回给定视口点处的场景点 视口点相对于父对象,而场景点相对于父对象 相对

是否可以在InteractiveViewer中使用GestureDetector(特别是onTapUp手势)


我知道InteractiveViewer本身使用一个GestureDetector,并覆盖onScaleEnd、onScaleStart和onScaleUpdate方法来实现平移。但是,onTapUp并没有被覆盖,这让我认为有可能使用它。

我做了一些深入的研究,在for the toScene()方法中发现了这一点:

返回给定视口点处的场景点

视口点相对于父对象,而场景点相对于父对象 相对于子对象,不考虑变换。调用toScene 使用视口点时,基本上返回 位于给定变换的视口点下方

视口变换为子对象的逆对象(即移动子对象) “左辅”相当于将视口向右移动)

在确定事件在服务器上的位置时,此方法通常很有用 父对象发生在子对象上。此示例显示了如何确定位置 在子对象上轻触父对象

手势检测器(
onTapUp:(TapUpDetails){
_childWasTappedAt=\u transformationController.toScene(
details.localPosition,
);
},
子:InteractiveViewer(
transformationController:\u transformationController,
孩子:孩子,
),   ); }

因此,建议的解决方案是使用GestureDetector包装Interactiveeviewer,使用自定义TransformationController,并从该控制器获取相对于查看器视口的位置,而不是作为孩子使用GestureDetector。

我做了一些深入研究,在for the toScene()方法中发现了这一点:

返回给定视口点处的场景点

视口点相对于父对象,而场景点相对于父对象 相对于子对象,不考虑变换。调用toScene 使用视口点时,基本上返回 位于给定变换的视口点下方

视口变换为子对象的逆对象(即移动子对象) “左辅”相当于将视口向右移动)

在确定事件在服务器上的位置时,此方法通常很有用 父对象发生在子对象上。此示例显示了如何确定位置 在子对象上轻触父对象

手势检测器(
onTapUp:(TapUpDetails){
_childWasTappedAt=\u transformationController.toScene(
details.localPosition,
);
},
子:InteractiveViewer(
transformationController:\u transformationController,
孩子:孩子,
),   ); }
因此,建议的解决方案似乎不是将GestureDetector作为孩子,而是使用GestureDetector包装Interactiveeviewer,使用自定义TransformationController,并从该控制器获取相对于查看器视口的位置