flutter widget 设置GestureDetector点击无效

有可能是被上层的widget挡住了,虽然你看得到这个widget,但是操作不到。使用相对布局Stack要特别注意,这种布局会和Android一样,先写的布局放在下层,后写的,如果范围较大的话,会盖在之前的widget上。

我遇到的问题就是如此,虽然看得到想要点击的按钮,但添加了手势侦测,就是产生不了点击事件。

解决方案就是:把这个widget写到后边就行,因为在stack里他的相对位置是不变的,只是层级关系,后边写的会在上层,这样点击事件就不用穿透啥的了。

PS:

在flutter中只用GestureDetector添加点击事件,发现在空白区域点击无效,事件不响应。解决办法:

GestureDetector(

behavior: HitTestBehavior.opaque,

)

说明:

enum HitTestBehavior {

/// Targets that defer to their children receive events within their bounds

/// only if one of their children is hit by the hit test.

deferToChild,

/// Opaque targets can be hit by hit tests, causing them to both receive

/// events within their bounds and prevent targets visually behind them from

/// also receiving events.

opaque,

/// Translucent targets both receive events within their bounds and permit

/// targets visually behind them to also receive events.

translucent,

}

翻译一下就是:

当behavior选择deferToChild时,只有当前容器中的child被点击时才会响应点击事件;

当behavior选择opaque时,点击整个区域都会响应点击事件,但是点击事件不可穿透向下传递,注释翻译:阻止视觉上位于其后方的目标接收事件,所以我需要的这种效果直接将behavior设置为HitTestBehavior.opaque就可以了;

当behavior选择translucent时,同样是点击整个区域都会响应点击事件,和opaque的区别是点击事件是否可以向下传递,注释翻译:半透明目标既可以在其范围内接受事件,也可以允许视觉上位于其后方的目标接收事件。

相关推荐
jiejiejiejie_1 小时前
Flutter for OpenHarmony 倒计时功能实战开发
flutter
Math_teacher_fan1 小时前
Flutter 跨平台开发实战:鸿蒙与音乐律动艺术(六)、Lissajous 利萨茹曲线:频率耦合的轨迹艺术
flutter·ui·数学建模·华为·harmonyos·鸿蒙系统
里欧跑得慢1 小时前
17. Flutter Hero动画实现:让界面过渡更加优雅
前端·css·flutter·web
liulian09162 小时前
Flutter for OpenHarmony 跨平台开发:秒表功能实战指南
flutter
xmdy58663 小时前
Flutter+开源鸿蒙实战|智安盾电商溯源平台Day3 溯源查询逻辑+鸿蒙网络请求适配
flutter·开源·harmonyos
maaath3 小时前
【maaath】Flutter 跨平台日历日程应用开发实战
flutter·华为·harmonyos
xmdy58666 小时前
Flutter+开源鸿蒙实战|智安盾电商溯源平台Day2 首页+核心入口UI开发(鸿蒙多端适配)
flutter·开源·harmonyos
jiejiejiejie_6 小时前
Flutter for OpenHarmony 萌系 UI 实战合集:骨架屏 + 引导页一站式指南
flutter·ui·华为
liulian09167 小时前
Flutter for OpenHarmony 跨平台开发:倒计时功能实战指南
flutter
liulian09168 小时前
Flutter for OpenHarmony 实用功能实战合集:日历打卡 + 高清图片浏览一站式指南
flutter