检测“输入键”按下是否颤抖

时间:2019-02-25 05:48:49

标签: flutter

就我而言,我需要扫描条形码并获取产品详细信息。通常,条形码扫描仪设备会在扫描结束时发出enter key(keycode=13) event,但是在颤动中,Enter键与Done不同,那么如何编码检测我的TextFormField小部件中按下的Enter键?

4 个答案:

答案 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