就我而言,我需要扫描条形码并获取产品详细信息。通常,条形码扫描仪设备会在扫描结束时发出enter key(keycode=13) event
,但是在颤动中,Enter键与Done
不同,那么如何编码检测我的TextFormField小部件中按下的Enter键?
答案 0 :(得分:4)
如果有人正在寻找与 Al Walid Ashik 相同的解决方案,但对于 TextFormField
,只需使用以下内容:
TextFormField(
/// ...
onFieldSubmitted: (value) {
/// do some stuff here
},
),
答案 1 :(得分:0)
TextFormField(
maxLines: null,
autovalidate: true,
validator: (value){
if(value.contains('\n')){
doFun(value);
}
}
)
当用户按下enter key
时,在文本框中创建新行。我们对此进行确认。
maxLine:null
-隐藏多行
autovalidate:true
-自动运行验证器乐趣
'\n'
-换行('\ s'-空格,'\ t'-tab等。
答案 2 :(得分:0)
如果您使用的是TextField
,则必须在文本字段中添加onSubmitted
,以检测用户何时按 Enter 键。就我而言,我将键盘上的Done
更改为TextInputAction.Search
。它也适用于TextInputAction.Done
。这是示例代码
TextField(
onSubmitted: (value){
//value is entered text after ENTER press
//you can also call any function here or make setState() to assign value to other variable
},
textInputAction: TextInputAction.search,
)
答案 3 :(得分:0)
以上解决方案有效,但是我相信RawKeyboardListener
是一种更可靠,更灵活的解决方案。您只需要用它覆盖文本字段并开始侦听键盘事件:
var focusNode = FocusNode();
RawKeyboardListener(
focusNode: focusNode,
onKey: (event) {
if (event.isKeyPressed(LogicalKeyboardKey.enter)) {
// Do something
}
},
child: TextField(controller: TextEditingController())
)
作为第二种选择,您可以使用onKey
的{{1}}方法并将节点传递到您的文本字段:
FocusNoded