如何在Flutter键盘上更改文本输入操作按钮(返回/输入键)?

时间:2018-04-30 19:52:00

标签: dart flutter

Android和iOS 中,可以将键盘输入/返回键更改为例如a" Go "按钮(和其他选项)。

illustration

顶部,我们可以看到常规" 返回"两个系统上的按钮,默认情况下是您在Android和&amp ;; iOS原生和Flutter。

下面,在两个系统上还有另一个设置,您只需在原生应用程序中进行调整即可。它是" Go "在这种情况下按钮。

5 个答案:

答案 0 :(得分:20)

TextField输入动作可以这样指定(在这里,是 Go 按钮):

TextField(
  textInputAction: TextInputAction.go
  ...
)

List of all available input actions.

答案 1 :(得分:20)

这是使用textInputAction的方式:

TextField(
  textInputAction: TextInputAction.search,
  onSubmitted: (value) {
    print("search");
  },
  decoration: InputDecoration(
    border: InputBorder.none,
    prefixIcon: Icon(Icons.search),
    hintText: 'Search ',
    contentPadding: EdgeInsets.fromLTRB(20.0, 15.0, 20.0, 15.0),
  ),
);

答案 2 :(得分:5)

目前无法做到这一点。 虽然您可以编辑颤振源,但很容易实现。

以下编辑内容为:

  

扑/ LIB / SRC /部件/ editable_text.dart

_openInputConnection行~430更改为

void _openInputConnection() {
  if (!_hasInputConnection) {
    final TextEditingValue localValue = _value;
    _lastKnownRemoteTextEditingValue = localValue;
    _textInputConnection = TextInput.attach(this,
        new TextInputConfiguration(
            inputType: widget.keyboardType,
            obscureText: widget.obscureText,
            autocorrect: widget.autocorrect,
            inputAction: widget.keyboardType == TextInputType.multiline
                ? TextInputAction.newline
                : TextInputAction.done
        )
    )..setEditingState(localValue);
  }
  _textInputConnection.show();
}

在同一个文件中,还在EditableText类(不是状态1)〜第280行声明一个新字段

final TextInputAction textInputAction;

并在第164行以上的EditableText构造函数中分配

this.textInputAction,
  

扑/ LIB / SRC /材料/ text_field.dart

同样的故事。添加新字段,但改为TextField

final TextInputAction textInputAction;

并将以下内容添加到它的构造函数中:

this.textInputAction,

最后,将该新字段作为参数传递给EditableText第479行:

    textInputAction: widget.textInputAction,

完成。

您现在可以在应用内指定自定义TextInputAction。这不会破坏现有TextField。它只是增加了覆盖默认行为的能力。

new TextField(
  keyboardType: TextInputType.text,
  textInputAction: TextInputAction.newline,
),

答案 3 :(得分:3)

基本上我们使用两种类型的文本输入字段, TextFieldTextFormField

所以,

对于文本字段,

TextField(
  textInputAction: TextInputAction.go
  .......
)

对于 TextFormField,

TextFormField(
          textInputAction: TextInputAction.go,
           ........
)

两者都有 textInputAction 属性,我们可以使用这个

答案 4 :(得分:-1)

一个角度......我没有探索TextField中的所有“keyboardType”选项(TextInputType的可选参数)。

但是'emailAddress'和'datetime'和'phone'有一些明显不同的键盘 - 其中一个选项可能会发出你正在寻找的键盘......