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