Как предотвратить отклонение клавиатуры при нажатии кнопки подтверждения во флаттере? - PullRequest
0 голосов
/ 26 апреля 2019

Я создаю флаттер-приложение, в котором пользователь может напечатать сообщение и нажать кнопку «Отправить» на клавиатуре, чтобы отправить сообщение. Проблема в том, что когда я нажимаю кнопку отправки, сообщение отправляется, но клавиатура автоматически закрывается. Как я могу предотвратить это? Заранее спасибо.

TextField(
  autofocus: true,
  keyboardType: TextInputType.multiline,
  maxLines: null,
  decoration: new InputDecoration.collapsed(
    hintText: "Let's talk",
    border: UnderlineInputBorder(
      borderRadius: BorderRadius.circular(1),
    ),
  ),
  textInputAction: TextInputAction.send,
  onSubmitted: null,
)

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Это сработало для меня: -

Сначала создайте FocusNode и присвойте его текстовому полю, сделайте следующее: -

FocusNode является долгоживущим компонентом, поэтому инициализируйтев методе initState: -

FocusNode inputFieldNode;

 @override
  void initState() {
    super.initState();
    inputFieldNode = FocusNode();
  }

Не забудьте очистить метод FocusNode in dispose после удаления формы: -

 @override
  void dispose() {
    inputFieldNode.dispose();
    super.dispose();
  }

НазначьтеFocusNode в текстовое поле и введите следующий код в onSubmitted:: -

TextField(
            focusNode: inputFieldNode,
            onSubmitted: (String) => FocusScope.of(context).requestFocus(inputFieldNode),
          )

Теперь текстовое поле не потеряет фокус даже после нажатия кнопки отправки.

1 голос
/ 26 апреля 2019
SystemChannels.textInput.invokeMethod('TextInput.show');

при методе onSubmit

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