flutter监听全局点击事件
Flutter中可以通过GestureDetector来监听全局点击事件。
- 首先,在MaterialApp中设置全局的GestureDetector:
MaterialApp(
home: GestureDetector(
onTap: () {
// 全局点击事件
},
child: MyHomePage(),
),
);
- 如果需要排除某些Widget,可以在onTap回调中判断点击的位置是否在排除的Widget上:
MaterialApp(
home: GestureDetector(
onTap: (TapDownDetails details) {
RenderBox box = context.findRenderObject();
Offset localOffset = box.globalToLocal(details.globalPosition);
if (box.hitTest(BoxHitTestResult(), position: localOffset)) {
// 点击的位置在排除的Widget上,不处理
return;
}
// 全局点击事件
},
child: MyHomePage(),
),
);
这里使用了RenderBox的hitTest方法来判断点击的位置是否在Widget上
原文地址: https://www.cveoy.top/t/topic/c1Cl 著作权归作者所有。请勿转载和采集!