【问题标题】:Flutter - Programmatically change the mouse cursor without rebuilding the widget. Setting cursor in a RenderBox?Flutter - 在不重建小部件的情况下以编程方式更改鼠标光标。在 RenderBox 中设置光标?
【发布时间】:2023-01-17 08:05:15
【问题描述】:

更改光标的最常见用途是通过MouseRegionsetState。例子:

MouseRegion(cursor: _myCursor);

setState(() {
  if(...) {
    _myCursor = SystemMouseCursors.copy;
  } else {
    _myCursor = SystemMouseCursors.move;
  }
});

有没有办法在不重建Widget的情况下进行此更改?例如,CustomPaint 接受一个 Listening,当它被触发时,只会通知新的重绘而不是重建。

也许如果可以将鼠标光标设置在RenderBox 内。我可以使用 ListeningmarkNeedsPaint 方法创建一个复制 CustomPaint 的行为。

有没有人已经在RenderBox 中配置了光标?

【问题讨论】:

  • RenderMouseRegioncursor 属性有一个公共设置器 - 试试吧
  • 谢谢,@pskink。秘诀是实施MouseTrackerAnnotation

标签: flutter mouse renderbox


【解决方案1】:

研究RenderMouseRegion,我发现你的自定义RenderBox需要实现MouseTrackerAnnotation来改变光标。 hitTest 必须返回 TRUE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多