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

Flutter随手记:GestureDetector实现点击事件时,点击空白区域不能响应?_第1张图片

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


正题


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

        GestureDetector(
          child: Container(
            width: ThemeSize.NavigationHeight,
            height: ThemeSize.NavigationHeight,
            child: Center(
              child: Image.asset(
                ImagePath.commonPath + "common_return_icon.png",
                fit: BoxFit.fitWidth,
                width: 10,
                height: 32,
              ),
            ),
          ),
          onTap: () {
            Navigator.of(context).pop();
          },
        ),

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

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



参考博客


Flutter随手记:GestureDetector实现点击事件时,点击空白区域不能响应?_第3张图片

你可能感兴趣的:(Flutter随手记:GestureDetector实现点击事件时,点击空白区域不能响应?)