Flutter web:当鼠标指针悬停在子小部件上时,子容器小部件如何阻止其父可滚动小部件滚动?

问题描述 投票:0回答:0

我在父可滚动小部件中有一个子容器小部件。当鼠标指针位于子小部件上时,有什么方法可以防止父小部件通过触控板/鼠标接收鼠标事件(滚动)?

我试图将子 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),
          ],
        ),
      ),
flutter web widget scrollview parent-child
© www.soinside.com 2019 - 2024. All rights reserved.