我在父可滚动小部件中有一个子容器小部件。当鼠标指针位于子小部件上时,有什么方法可以防止父小部件通过触控板/鼠标接收鼠标事件(滚动)?
我试图将子 Container 小部件包装在 GestureDetector 中,但它不起作用。
====================
找到解决方案:
将子小部件包装在 Listener 中,处理 Pointer Signal 事件,然后解决一些我不希望父小部件接收的 Pointer 事件。谢谢。
SingleChildScrollView(
child: Column(
children: [
Container(color: Colors.green, height: 600.0),
Listener(
onPointerSignal: (pointerSignal) {
debugPrint('onPointerSignal: $pointerSignal');
if (pointerSignal is PointerScrollEvent) {
GestureBinding.instance.pointerSignalResolver
.register(pointerSignal, (PointerSignalEvent event) {
// handle the event and prevent parent receiving it
});
}
},
child: Container(
color: Colors.red,
height: 100.0,
child: const Text(
'Expecting parent widget not receive pointer events when mouse pointer is over me'),
),
),
Container(color: Colors.green, height: 600.0),
],
),
),