当前位置: 首页 > 面试题库 >

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

闻人高卓
2023-03-14
问题内容

我有一个ScrollableListView或其他任何一个),它包含一个透明的小部件,例如Container(height:200)。我可以同时看到小部件和可滚动控件(换句话说,可以看到可滚动控件后面的小部件)。

我如何能够单击透明小部件和可滚动控件,以便到达可滚动控件后面的小部件?

ListView(
  children: [
    Container(height: 200), // Transparent.
    Container(color: Colors.red, height: 200),
    ],
);

请注意,我不能IgnorePointer用来包装可滚动控件,因为我仍然想单击可滚动控件中的非透明窗口小部件。


问题答案:

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

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

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

RenderBox renderBox = _key.currentContext.findRenderObject();
Offset topLeftCorner = renderBox.localToGlobal(Offset.zero);
Size size = renderBox.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
}


 类似资料:
  • #klem1,#klem2 { opacity:0.4; filter:alpha(opacity=40); /* For IE8 and earlier */ } #klem1:hover,#klem2:hover { opacity:1.0; filter:alpha(opacity=100); /* For IE8 and earlier */ } div.background { widt

  • 我一直在Stack上寻找一些关于这个的指导,但是没有一个问题被问到这么深,答案也没有更新到最新的Swift版本,甚至没有更新到最新的Swift版本。 这是我所拥有的: 带有两个栏项目的导航控制器: 我的目标是:使导航根视图控制器的导航栏透明(但按钮和标题仍然可见),而不是子导航——没有奇怪的细微差别,比如之前的彩色闪光,或切断导航栏(参见gif) 我尝试过的事情: 在<代码>视图将出现(u动画:B

  • 我们已经做了一些自定义动画功能用于内容过渡。强烈建议使用我们的滚动显示插件来使你的内容滚动显示。 showStaggeredList 使用它来创建一个交错的显示效果对于任何带列表项的 UL 标签。只要确定这个列表项在 UL 标签里面是 opacity: 0 再次确认动画工作是否正常。 选项名称 描述 SelectorOrEl 过渡目标的选择器或元素 fadeInImage 使用这个过渡图片,这个动

  • 问题内容: 所以我有一个问题。我环顾四周,环顾四周,但没有运气。我想使我的身体背景透明,但使文本不透明。现在,我保持相同的不透明度。这是我的代码: 问题答案: 不要为此使用,而是将背景设置为RGBA值,以仅使背景半透明。在您的情况下将是这样。

  • 问题内容: some stuff, images etc 我想要的是让.container div具有80%的不透明度,但是.site_content的内容为100% 设置CSS不透明度会影响所有子元素。有办法吗?使用jQuery吗? 由于此方法的使用方式,我宁愿避免在后面放置另一个透明div来获得效果的技术。 问题答案: 您需要在容器div上使用RGBA背景属性。。64、64、64是RGB颜色值

  • 问题内容: 如何使JFrame透明?我想使我的JFrame透明。当我的JFrame位于顶部时,用户应该会看到背景。 问题答案: 如果您对使用受限的API类没有异议,则可以使用该类的类和方法来实现。这里和这里是有关如何使用它的教程?而这里是使用Java本地接入的版本。 代码示例

  • 问题内容: 我想自定义外观,因此我创建了一个自定义类,扩展了JPopupMenu类,从而覆盖了该方法,就像我对需要自定义的任何组件所做的那样。 我唯一正确知道的问题是我无法透明。我虽然足够,但我错了。 我该如何做透明的? 问题答案: 弹出菜单的问题在于它可能被实现为顶级容器(Window),并且窗口是不透明的,无论您用setOpaque()设置了什么值(不透明)。但是窗口也可以做成半透明的。 您可

  • 我有一个问题,使JComboBox透明。我尝试设置不透明为false和背景0的alpha,但它不起作用。我想我需要改变一些类,做渲染或类似的东西。这是代码...