Я создаю флаттер для Интернета и хочу использовать его на сенсорном экране. Мое приложение отлично работает и принимает данные от мыши, но когда я хочу использовать поле ввода текста, приложение работает с физической клавиатурой, которую я подключил, так как я работаю в Chrome на своем Macbook. Я хотел бы использовать это веб-приложение на установке типа киоска с сенсорным экраном, поэтому я хотел всегда использовать виртуальную (экранную) клавиатуру для ввода текста.

Я старался:

  @override
  void initState() {
    SystemChannels.textInput.invokeMethod('TextInput.show');
    super.initState();
  }

И это заставляет открывать виртуальную клавиатуру, например, если я работаю на виртуальном планшете, но у меня это не сработало, когда я запускал точно такое же приложение флаттера в хроме.

Я использую v1.9.1+hotfix.3-pre.1 в Mac OS X 10.14.6 18G103

Кто-нибудь знает способ заставить флаттер всегда использовать виртуальную экранную клавиатуру?

3
Eradicatore 30 Окт 2019 в 02:12
github.com/flutter/flutter/issues/32763 заставляет меня думать, что моя проблема связана к тому, что флаттер "знает", что я на ПК и у меня есть клавиатура. Так что, может быть, это сработает, если у меня сенсорный экран без подключенной клавиатуры? Как флаттер узнает, есть физическая клавиатура или нет?
 – 
Eradicatore
5 Ноя 2019 в 16:50
Вы можете использовать пакет pub.dev/packages/virtual_keyboard_multi_language для экранной клавиатуры.
 – 
Jayesh Choudhary
5 Июл 2021 в 15:20

1 ответ

Я не думаю, что во Flutter есть встроенная функция для вызова виртуальной клавиатуры рабочего стола. В качестве обходного пути вы можете использовать плагин virtual_keybaord_multi_language, который создает клавиатуру в приложении, или вы можете включить виртуальную клавиатуру по умолчанию на устройстве. Если вы работаете в Windows, переключение в режим планшета должно автоматически вызывать экранную клавиатуру, когда текстовое поле активно.

Изменить: кажется, это допустимый вариант использования, вы можете отслеживать запрос функции в этом тикете.

1
Omatt 16 Авг 2022 в 14:43