如何更改 Flutter Desktop 光标指针?

How to change Flutter Desktop cursor pointer?

我想在悬停某个小部件时更改光标指针,但我找不到实现此操作的方法。

看着这个 comment 好像他们已经有了适用于 macOS 的东西,但我找不到任何关于如何实现的信息。

如何在悬停小部件时更改光标?

MouseRegion上有一个cursor属性,它控制指针在该区域时显示什么光标。例如:

MouseRegion(
  cursor: SystemMouseCursors.text,
  child: YourWidgetHere(),
)

如果你想用自定义小部件替换鼠标光标,你也可以按照这个article

总结:

  1. 使用 MouseRegion 隐藏真正的光标,但仍使用 onHover 保存其位置
  2. 使用 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(),
        ),
      ],
    )
  ),
}