flutter - Flutter web GestureDetector:检测鼠标滚轮事件
问题描述
我正在为 web 开发一个颤振应用程序,当我在一个小部件(它不是一个滚动小部件)内滚动鼠标滚轮时,我试图执行一个回调方法。
我知道这个MouseRegion
小部件,并且使用 aListener
作为它的孩子我可以检测到onPointerSignal
事件。当Listener
的孩子是可滚动的小部件时,这可以正常工作,例如ListView
,但如果此小部件不可滚动,则它不起作用。
理想情况下,我想要的是一个类似于 的小部件GestureDetector
,其回调方法类似于和onPanStart
,但发生在鼠标滚轮事件上(或者,以同样的方式,用于笔记本电脑上的触控板滚动事件)。onPanUpdate
onPanEnd
有谁知道我怎么能做到这一点?
解决方案
Listener
不需要任何父母。可以使用如下所示的小部件,它将其子组件包装在 a 中Listener
,并在收到 a 时调用给定的回调PointerScrollEvent
:
class ScrollDetector extends StatelessWidget {
final void Function(PointerScrollEvent event) onPointerScroll;
final Widget child;
const ScrollDetector({
Key key,
@required this.onPointerScroll,
@required this.child,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Listener(
onPointerSignal: (pointerSignal) {
if (pointerSignal is PointerScrollEvent) onPointerScroll(pointerSignal);
},
child: child,
);
}
}
推荐阅读
- python-3.x - pyinstaller 不会用 ico 和 noconsole 编译
- python - 更新张量中的切片或列
- python - 从嵌套字典创建一个 Tall 格式的数据框
- ios - 将按钮添加到屏幕右侧
- java - For of to forEach -> lambda 表达式
- full-text-search - Mariadb 查询使用 match() against() 时内存不足
- java - 问题 paintComponent() 被调用但不起作用
- python - 如何在熊猫数据框列中加入列表的字符串值
- java - 为多个字段构建 Lucene 查询
- php - 将新数组条目添加到另一个类中的方法内部的函数