小编Las*_*s05的帖子

Flutter:GestureArena、RawGestureDetectors 的捏合缩放以及垂直滚动的问题

我正在尝试制作一个与 Google 日历周视图完全相同的小部件。这意味着

\n
    \n
  • 捏合缩放
  • \n
  • 垂直滚动
  • \n
\n

这是一个例子

\n

这是示例的GitHub 存储库。

\n

为了简单起见,我想只关注可能的垂直滚动,我可以自己添加其余的。

\n

问题是 PinchToZoom 非常不可靠,即使我进行捏缩放,列表也会开始滚动。为什么会发生这种情况?我做了一些研究并找到了这篇文章

\n

它基本上描述了我的问题的简化版本,即两个手势检测器竞争。解决方案是 RawGestureDetector。我自己写的:

\n
class PinchToZoomGestureRecognizer extends OneSequenceGestureRecognizer {\n  final void Function() onScaleStart;\n  final void Function() onScaleUpdate;\n  final void Function() onScaleEnd;\n\n  PinchToZoomGestureRecognizer({\n    required this.onScaleStart,\n    required this.onScaleUpdate,\n    required this.onScaleEnd,\n  });\n\n  @override\n  String get debugDescription => \'$runtimeType\';\n\n  Map<int, Offset> pointerPositionMap = {};\n\n  @override\n  void addAllowedPointer(PointerEvent event) {\n    startTrackingPointer(event.pointer);\n    pointerPositionMap[event.pointer] = event.position;\n    if (pointerPositionMap.length >= 2) {\n      resolve(GestureDisposition.accepted);\n …
Run Code Online (Sandbox Code Playgroud)

user-interface android listview dart flutter

5
推荐指数
1
解决办法
1283
查看次数

标签 统计

android ×1

dart ×1

flutter ×1

listview ×1

user-interface ×1