Flutter,拦截嵌套小部件中的触摸事件(PageView 案例中的 Map)

rup*_*pps 7 android gesture touch-event flutter

My FlutterMap( flutter_map),响应缩放/平移/点击手势 \n 是 a 的最后一个元素CustomScrollView,它本身就是 a 的页面之一PageView

\n\n

TL/DR:我希望地图始终能够获取事件。

\n\n

在此输入图像描述

\n\n

如图所示,左右触摸事件用于PageView滚动页面。向上-向下事件用于CustomScrollView滚动条子。所以地图通常不会收到任何事件,或者随机地,某些事件 \xe2\x9a\x94\xef\xb8\x8f赢得了竞技场战斗并让用户与地图交互。

\n\n
 \xe2\x9d\x99 \xe2\x98\x85 Opening new gesture arena.\n \xe2\x9d\x99 Adding: TapGestureRecognizer#df66a(debugOwner: GestureDetector, state: ready, button: 1)\n \xe2\x9d\x99 Adding: VerticalDragGestureRecognizer#2b952(start behavior: start)\n \xe2\x9d\x99 Adding: HorizontalDragGestureRecognizer#dbeae(start behavior: start)\n \xe2\x9d\x99 Closing with 3 members.\n \xe2\x9d\x99 Rejecting: TapGestureRecognizer#df66a(debugOwner: GestureDetector, state: possible, button: 1)\n \xe2\x9d\x99 Accepting: VerticalDragGestureRecognizer#2b952(start behavior: start)\n \xe2\x9d\x99 Self-declared winner: VerticalDragGestureRecognizer#2b952(start behavior: start)\n
Run Code Online (Sandbox Code Playgroud)\n\n

自称的获胜者几乎VerticalDrag总是CustomScrollViewHorizontalDragPageView

\n\n

因此,为了解决这个问题,我已经阅读了有关内容,RawGestureDetector但我不知道在哪里实现它或如何实现:在根级别,在地图内部(不像包那样理想),作为地图的父级......我有尝试了后者,一个 RawGestureDetector 阻止HorizontalDrag并且它确实阻止了它,但是通过在竞技场中获胜并阻止子地图在其内部的 PositionedTapDetector 中使用该事件。

\n\n

因此,简单来说,如果我想要的是地图总是获胜,那么最佳实践是什么?在 Android 上 I\xc2\xb4d 只是onInterceptTouchEvent在地图中覆盖View

\n