如何更改 Flutter Desktop 光标指针?
How to change Flutter Desktop cursor pointer?
我想在悬停某个小部件时更改光标指针,但我找不到实现此操作的方法。
看着这个 comment 好像他们已经有了适用于 macOS 的东西,但我找不到任何关于如何实现的信息。
如何在悬停小部件时更改光标?
MouseRegion
上有一个cursor
属性,它控制指针在该区域时显示什么光标。例如:
MouseRegion(
cursor: SystemMouseCursors.text,
child: YourWidgetHere(),
)
如果你想用自定义小部件替换鼠标光标,你也可以按照这个article。
总结:
- 使用 MouseRegion 隐藏真正的光标,但仍使用 onHover 保存其位置
- 使用 Stack 和 Positioned/AnimatedPositioned 小部件在小部件顶部添加自定义光标
// Use a stateful widget to record the cursor position
Offset position;
Widget build(BuildContext context) {
return MouseRegion(
cursor: SystemMouseCursors.none,
onHover: (event) {
setState(() {
// Save the position of the cursor when it moves
position = event.position;
});
},
child: Stack(
children: [
MyWidget(),
AnimatedPositioned(
duration: const Duration(milliseconds: 100),
left: position.dx,
top: position.dy,
child: CustomCursor(),
),
],
)
),
}
我想在悬停某个小部件时更改光标指针,但我找不到实现此操作的方法。
看着这个 comment 好像他们已经有了适用于 macOS 的东西,但我找不到任何关于如何实现的信息。
如何在悬停小部件时更改光标?
MouseRegion
上有一个cursor
属性,它控制指针在该区域时显示什么光标。例如:
MouseRegion(
cursor: SystemMouseCursors.text,
child: YourWidgetHere(),
)
如果你想用自定义小部件替换鼠标光标,你也可以按照这个article。
总结:
- 使用 MouseRegion 隐藏真正的光标,但仍使用 onHover 保存其位置
- 使用 Stack 和 Positioned/AnimatedPositioned 小部件在小部件顶部添加自定义光标
// Use a stateful widget to record the cursor position
Offset position;
Widget build(BuildContext context) {
return MouseRegion(
cursor: SystemMouseCursors.none,
onHover: (event) {
setState(() {
// Save the position of the cursor when it moves
position = event.position;
});
},
child: Stack(
children: [
MyWidget(),
AnimatedPositioned(
duration: const Duration(milliseconds: 100),
left: position.dx,
top: position.dy,
child: CustomCursor(),
),
],
)
),
}