Ответ 1
Действие ввода для TextField
может быть указано следующим образом (здесь кнопка Go):
TextField(
textInputAction: TextInputAction.go
...
)
В Android и iOS можно изменить ключ ввода/возврата клавиатуры, например, кнопку "Перейти" (и другие параметры).
В верхней части мы видим обычную кнопку "Возврат" на обеих системах, которая по умолчанию является вашей, без каких-либо изменений в Android и iOS native и Flutter.
Ниже, есть еще одна настройка, снова в обеих системах, которую вы можете просто настроить в своем родном приложении. В этом случае это кнопка "Перейти".
Действие ввода для TextField
может быть указано следующим образом (здесь кнопка Go):
TextField(
textInputAction: TextInputAction.go
...
)
В настоящее время это невозможно. Хотя вы можете редактировать источники флаттера, чтобы сделать это возможным довольно легко.
Следующие изменения:
трепетание /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,
),
Один угол... Я не изучал все опции "keyboardType" в TextField (необязательный параметр TextInputType).
Но есть некоторые очевидные разные клавиатуры для "emailAddress" и "datetime" и "phone" - один из этих вариантов может испускать клавиатуру, которую вы ищете...