您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Flutter:如何使ListView对指针事件透明(但对非透明内容不透明)?

Flutter:如何使ListView对指针事件透明(但对非透明内容不透明)?

我能想到的唯一合理的解决方案是GestureDetector在透明容器上放一个,它将为您提供水龙头的全局位置:

GestureDetector(
  onTapUp: (TapUpDetails tapUpDetails) {
    print("onTapUp global: " + tapUpDetails.globalPosition.toString());
  },

然后将a添加Key到列表后面的小部件,并使用它来获取小部件矩形的左上角的全局位置以及小部件的大小,并使用它们来获取小部件的矩形:

Render@R_522_2419@ render@R_522_2419@ = _key.currentContext.findRenderObject();
Offset topLeftCorner = render@R_522_2419@.localToGlobal(Offset.zero);
Size size = render@R_522_2419@.size;
Rect rectangle = topLeftCorner & size;

如果背景窗口小部件不移动,则可以initState使用WidgetsBinding.instance.addPostFrameCallback(在内同步执行渲染对象将在下一个帧内initState)进行保存,并保存Rect-否则您将不得不在每次点击时重新计算它。

然后最后在透明容器上的每个轻击上,您可以计算轻击的位置是否在背景小部件的边界内,并调用相应的代码

// if tap is within boundaries of the background widget
if (rectangle.contains(tapUpDetails.globalPosition)) {
  // your code here
}
其他 2022/1/1 18:14:48 有621人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶