Flutter随手记:GestureDetector实现点击事件时,点击空白区域不能响应?

刺骨的言语ヽ痛彻心扉 2023-01-10 11:50 548阅读 0赞

cf750a91c816f05f4e7939d1d73eb424.png

作为一个Flutter小白,需要写点随手笔记,来增加熟练度。

正题


上面的这个问题是当 GestureDetector 中添加了 Container组件,Container组件里面的图片并没完全占满所有的空间,这时候点击空白区域,事件不能响应。

  1. GestureDetector(
  2. child: Container(
  3. width: ThemeSize.NavigationHeight,
  4. height: ThemeSize.NavigationHeight,
  5. child: Center(
  6. child: Image.asset(
  7. ImagePath.commonPath + "common_return_icon.png",
  8. fit: BoxFit.fitWidth,
  9. width: 10,
  10. height: 32,
  11. ),
  12. ),
  13. ),
  14. onTap: () {
  15. Navigator.of(context).pop();
  16. },
  17. ),

正解是 GestureDetector 的 behavior 需要设置。可设置的值是一个枚举一共有三个值,根据情况,我使用的是 *opaque。具体如下所示。

2bec0f84c98444b5404fb1f68443ac62.png






















属性 说明
deferToChild 只有当前容器中的child被点击时才会响应点击事件。
opaque 点击整个区域都会响应点击事件,但是点击事件不可穿透向下传递,注释翻译:阻止视觉上位于其后方的目标接收事件。
translucent 同样是点击整个区域都会响应点击事件,和opaque的区别是点击事件是否可以向下传递,注释翻译:半透明目标既可以在其范围内接受事件,也可以允许视觉上位于其后方的目标接收事件。

[参考博客](http://www.luyixian.cn/news\_show\_409941.aspx)

1cc773b3510614b54c92ffc3dc40d24a.gif

发表评论

表情:
评论列表 (有 0 条评论,548人围观)

还没有评论,来说两句吧...

相关阅读