Неясный текст заставляет backspace удалять два символа одновременно

#android #flutter #keyboard

#Android #флаттер #клавиатура

Вопрос:

Я разрабатываю приложение в Flutter. Приложение работает без проблем в iOS и, похоже, корректно работает с клавиатурой Swiftkey, но у меня возникают проблемы с gBoard и клавиатурой Samsung.

Когда я устанавливаю obscureText значение true для a TextField или a TextFormField , кнопка backspace на клавиатуре удаляет два символа одновременно. Когда obscureText поле находится false , оно работает правильно. Кроме того, я могу установить obscureText для поля true значение, и оно будет работать нормально, если я использую клавиатуру Switkey.

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

Вот виджет TextFormField, который является виновником:

 TextFormField(
                      obscureText: true,
                      decoration: InputDecoration(
                        enabledBorder: InputBorder.none,
                        focusedBorder: InputBorder.none,
                        hintStyle: TextStyle(
                            fontSize: textSizeLarge,
                            color: t12_text_secondary
                        ),
                        hintText: 'Hours...',
                        prefixIcon: Icon(
                          Icons.access_time,
                          color: t12_text_secondary,
                          size: 25,
                        ),
                        fillColor: Colors.white,
                        filled: true,
                      ),
                      style: TextStyle(
                          fontSize: textSizeLarge,
                          color: t12_text_color_primary,
                          fontFamily: fontRegular,
                          height: 1.5
                      ),
                      validator: (value) {
                        if(value.isEmpty){
                          return "Date Required";
                        }else if(!helpers.isDouble(value)){
                          return "Value must be a number";
                        }
                        else{
                          return null;
                        }
                      },
                    ),
  

Ответ №1:

Вероятно, это связано с проблемой Flutter 70744 и другими подобными проблемами.

В последнее время было несколько TextInputType ошибок, возможно, из-за того, что SDK был изменен для поддержки целевых выпусков Web, Linux и Windows.

Комментарии:

1. Спасибо за комментарий. Я рассмотрю эту проблему с флаттером. Недавно я заметил, что эта ошибка появилась и в другом моем проекте flutter.

Ответ №2:

Я столкнулся с этой проблемой, когда использовал бета-канал flutter. Это было исправлено после того, как я переключился на «стабильный» канал. Я думаю, что эта проблема по-прежнему является ошибкой в канале «бета».

Вы можете проверить свой канал, набрав «flutter —version» в терминале.

Если это не «стабильный» канал, вы можете изменить его, набрав «стабильный канал flutter» в терминале.

Комментарии:

1. Я давно не работал над этим приложением, поэтому пока не смог попробовать другой ответ. Когда я поиграю с ним в следующий раз, я попробую оба из них. Спасибо за совет.