У меня такое странное поведение во всех виджетах TextFormField в моем приложении, когда при вводе Ç или ç курсор перемещается назад перед Ç/ç, а не за ним (наблюдается на Android и iOS). Вдобавок к этому странному поведению, если бы я вставил новую букву, эта новая буква не была бы помещена перед Ç/ç (как можно предположить b/c каретки), нет, она перезаписывает Ç /ç странным образом образуя смесь двух букв, как будто приложение не знало, что на самом деле буква уже существует. Пожалуйста, проверьте прикрепленные фотографии.
Я могу подтвердить, что это не проблема со шрифтом и не с UTF. Шрифт может отображать cedilla c, и создание нового флаттер-приложения только с TextFormField не будет воспроизводить эту проблему. Значит, я что-то упускаю.
Я использую довольно простой TextFormField по умолчанию, который создает свой собственный TextEditingController. Я не хочу создавать экземпляр собственного TextEditingController для каждого TextFormField, чтобы передать ему обходной путь (например, проверку Ç/ç и перемещение каретки за ним) b/c, как уже упоминалось, я знаю, что TextFormField по умолчанию отлично работает с cedilla в.
Вот пример TextFormField, который сталкивается с таким поведением:
TextFormField(
decoration: const InputDecoration(labelText: 'Name it'),
validator: (value) {
if (value!.isEmpty) {
return 'Name is missing';
}
// case: name already exists
final check = context.read<BookState>().when((books) {
if (books.any((e) => e.name == value)) {
return 'Name already exists';
}
}, empty: () => null);
// case: all good
return check;
},
onSaved: (value) => bookName = value!,
)
Решение проблемы
Если вы перейдете на страницу TextFormField и протестируете ее, вы увидите, что у нее правильное поведение.
Комментариев нет:
Отправить комментарий