Как изменить кнопку действия ввода текста (клавиша возврата / ввода) на клавиатуре во флаттере? - PullRequest
0 голосов
/ 30 апреля 2018

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

illustration

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

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

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

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

Следующие правки:

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

final TextInputAction textInputAction;

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

.
this.textInputAction,

трепетание / Библиотека / 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,
),
0 голосов
/ 25 июля 2018

Действие ввода для TextField можно указать следующим образом (здесь кнопка Go ):

TextField(
  textInputAction: TextInputAction.go
  ...
)

Список всех доступных действий ввода.

0 голосов
/ 01 мая 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...