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/kpfw 著作权归作者所有。请勿转载和采集!