Как изменить кнопку ввода текстового ввода (клавиша возврата/ввода) на клавиатуре во флаттере?

В Android и iOS можно изменить ключ ввода/возврата клавиатуры, например, кнопку "Перейти" (и другие параметры).

illustration

В верхней части мы видим обычную кнопку "Возврат" на обеих системах, которая по умолчанию является вашей, без каких-либо изменений в Android и iOS native и Flutter.

Ниже, есть еще одна настройка, снова в обеих системах, которую вы можете просто настроить в своем родном приложении. В этом случае это кнопка "Перейти".

Ответы

Ответ 2

В настоящее время это невозможно. Хотя вы можете редактировать источники флаттера, чтобы сделать это возможным довольно легко.

Следующие изменения:

трепетание /Library/SRC/виджеты/editable_text.dart

Изменить строку _openInputConnection ~ 430 to

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 (а не состояние) ~ строка 280

final TextInputAction textInputAction;

И назначьте его в конструкторе EditableText выше строки 164

this.textInputAction,

флаттера /Library/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

Один угол... Я не изучал все опции "keyboardType" в TextField (необязательный параметр TextInputType).

Но есть некоторые очевидные разные клавиатуры для "emailAddress" и "datetime" и "phone" - один из этих вариантов может испускать клавиатуру, которую вы ищете...