操作手机时可用的输入机制很有限,你试过点击的单个像素而非旁边的像素吗?
手机上可能办不到,但在其他平台,我们有mouse。
可利用MouseRegion小部件得知mouse是否位于特定区域
选用能感应mouse动作的小部件,并以MouseRegion包裹,便能得知mouse是否处于特定范围
MouseRegion(
child: Container(),
)
为此,一开始先更改指标以给用户提示,利用cursor属性,最常见光标的相关定义都包含在SystemMouseCursors类
如
- SystemMouseCursors.basic
- SystemMouseCursors.text
- SystemMouseCursors.click
- SystemMouseCursors.forbidden
MouseRegion(
child: Container(),
cursor: SystemMouseCursors.basic
)
接着,MouseRegion会有一系列回调,可用以监听mouse.当鼠标首次进入MouseRegion占用区就会调用onEnter,回调将被赋予一指标输入事件,籍此提供鼠标坐标或按钮动作在内的各种资讯,onHover和onExit也差不多。
每次鼠标在MOuseRegioon小部件易位或离开时都会被调用
MouseRegion(
child: Container(),
cursor: SystemMouseCursors.click,
onEnter: (event) => {},
onHover: (event) => {},
onExit: (event) => {},
)
现在各位或许会认为在调用方面,onEnter和onExit是联动的,毕竟有进必有出,对吧?
不是的,若小部件就是消失了怎么办?
MouseRegion有时可能会离开小部件树,这不算退出mouse,且不会调用onExit回调
如果想了解有关MouseRegion 的内容,或者关于Flutter的其他功能,请访问flutter.dev
原文翻译自视频:视频地址