class ExampleWidget extends StatefulWidget {
const ExampleWidget({Key? key}) : super(key: key);
@override
State<ExampleWidget> createState() => _ExampleState();
}
class _ExampleState extends State<ExampleWidget> {
bool showCursor = false;
@override
Widget build(BuildContext context) {
return MouseRegion(
cursor: showCursor ? SystemMouseCursors.basic : SystemMouseCursors.none,
);
}
}
在上面的代码中,在Windows上,如果showCursor
设置为false
,并且用户移动光标,则鼠标光标将被隐藏。如果showCursor
的值设置为false,而用户没有移动鼠标,则光标图标将不会更新,直到用户移动它。
这是由于Flutter引擎中的一个错误:https://github.com/flutter/flutter/issues/76622.
我该如何解决这个问题?有没有其他方法可以在Flutter中隐藏鼠标光标?
1条答案
按热度按时间qybjjes11#
我已经找到了解决此问题的方法:
更改
cursor
后调用此函数即可。这段代码将调用一个
win32
API来手动更新鼠标位置(这将触发光标图标的变化),我还将它 Package 在一个Timer中,这样MouseRegion
就有时间做出React。您可能需要安装
win32
和ffi
pub包。我还创建了一个
EnhancedMouseRegion
,它的工作原理与MouseRegion相同,但已修复此问题: