我目前正在开发适用于 Windows 的 Flutter 应用程序,并尝试检测键盘输入(如空格、箭头、回车...)。
为此,我RawKeyboardListener在我的小部件中使用:
class _WaveformWidgetState extends State<WaveformWidget>
{
FocusNode _focusNode = FocusNode();
@override
Widget build(BuildContext context)
{
return RawKeyboardListener(
autofocus: true,
focusNode: _focusNode,
onKey: (event) {
if (event.isKeyPressed(LogicalKeyboardKey.enter))
{
print("value : enter");
}
},
child: Container(...),
);
}
}
问题是:该小部件位于另一个小部件内部,该小部件包含一个表单,带有多个TextFormFields按钮等。
正因为如此,似乎以TextFormFields某种方式保持焦点并阻止我RawKeyboardListener工作。
所以我尝试通过FocusScope.of(context).requestFocus(_focusNode);在build()该小部件的方法中添加,但现在TextFormFields当我点击它们时我总是失去焦点。很确定这是一个与焦点相关的问题,但我不知道如何处理它。
那么如何在不影响表单的情况下正确收听当前小部件中的原始键盘事件?
谢谢。