MouseRegion 介绍
在咱们进行 h5 开发的时候,咱们都晓得 css
有一个 hover
来扭转元素的款式,那么咱们在 Flutter
中也能够通过 MouseRegion
是监听区域内鼠标的进入和退出以及挪动轨迹。
视频教程地址
手势系列视频教程地址
什么状况下应用 MouseRegion?
MouseRegion
罕用于 Flutter
的Web
开发或者桌面程序中,当咱们鼠标须要对某个组件进入或者退出时须要减少一些特定的性能,那咱们就须要用到MouseRegion
。
MouseRegion 的构造函数
const MouseRegion({
Key? key,
this.onEnter,
this.onExit,
this.onHover,
this.cursor = MouseCursor.defer,
this.opaque = true,
this.child,
}) : assert(cursor != null),
assert(opaque != null),
super(key: key);
MouseRegion 的属性和阐明
总共 6 个属性
字段 | 属性 | 形容 |
---|---|---|
onEnter | PointerEnterEventListener | 鼠标进入区域时的回调 |
onExit | PointerHoverEventListener | 鼠标退出区域时的回调 |
onHover | PointerExitEventListener | 鼠标在区域内挪动时的回调 |
cursor | MouseCursor | 鼠标悬停区域时的光标款式 |
opaque | bool | 是否阻止检测鼠标 |
child | Widget | 子组件 |
MouseRegion 的根本应用
咱们通过 MouseRegion
来包裹了一个子组件 Container
,当鼠标进行时就会走onEnter
的回调并扭转其色彩为绿色,挪动鼠标时就会走 onHover
的回调,鼠标退出 Container
区域时进入 onExit
的回调并扭转其色彩为橙色。代码如下:
import 'package:flutter/material.dart';
class MouseRegionExample extends StatefulWidget {
@override
_MouseRegionExampleState createState() => _MouseRegionExampleState();
}
class _MouseRegionExampleState extends State<MouseRegionExample> {
Color _color = Colors.orange;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("MouseRegion"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
MouseRegion(onEnter: (event) {print("onEnter---$event");
setState(() {_color = Colors.green;});
},
onExit: (event) {print("onExit---$event");
setState(() {_color = Colors.orange;});
},
onHover: (event) {// print("onHover---$event");
},
// cursor: MouseCursor.uncontrolled,
cursor: SystemMouseCursors.click,
opaque: false,
child: Container(
width: 100,
height: 100,
color: _color,
),
),
],
)
),
);
}
}
MouseRegion 成果展现
总结
MouseRegion
在专门针对于 Web
以及桌面应用程序监听鼠标在某个区域内的事件,包含鼠标的进入和退出以及挪动轨迹,在平时的开发中应用绝对会较少,如果在当前进行 Flutter Web
开发时 MouseRegion
咱们就会常常用到。