我可以通过将 a 包装在a 中并使用该函数来成功检测用户何时按下a 中ENTER的键。但是,我想阻止接收击键并添加新行。如何防止击键被传递到?TextFieldTextFieldRawKeyboardListeneronKeyTextFieldENTERENTERTextField
使用焦点节点:
final focusNode = FocusNode(onKey: (node, event) {
if (event.isKeyPressed(LogicalKeyboardKey.enter)) {
return KeyEventResult.handled;
}
return KeyEventResult.ignored;
});
Run Code Online (Sandbox Code Playgroud)
然后将 focusNode 传递给您的 TextField
FocusManager 接收来自 RawKeyboard 和 HardwareKeyboard 的按键事件,并将它们传递给焦点节点。它从具有主要焦点的节点开始,并将调用该节点的 onKey 或 onKeyEvent 回调。如果回调返回KeyEventResult.ignored,表明它没有处理该事件,FocusManager将移动到该节点的父节点并调用其onKey或onKeyEvent。如果 onKey 或 onKeyEvent 返回 KeyEventResult.handled,那么它将停止传播事件。如果到达根 FocusScopeNode FocusManager.rootScope,则该事件将被丢弃。
| 归档时间: |
|
| 查看次数: |
878 次 |
| 最近记录: |