Flutter - не видит сообщения проверки для отключенных полей формы - PullRequest
0 голосов
/ 22 марта 2019

Для моего Flutter приложения я использую много полей формы ввода для ввода данных и назначаю метод проверки для каждого, для всех полей сообщение об ошибке отображается нормально, чуть ниже поля, за исключением одного поля, которое принимает значение из диалогового окна выбора, так что я отключил его (enabled=false), чтобы предотвратить ввод данных пользователем

Это нормально, что в отключенном поле не отображаются сообщения об ошибках валидации? если да, должен ли я сделать что-то другое, чтобы запретить ввод данных пользователем в это поле, кроме как отключить его?

Ответы [ 3 ]

0 голосов
/ 23 марта 2019

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

В любом случае, на данный момент я отредактировал код флаттера, чтобы показать сообщение об ошибке отключенного поля

в файле flutter\packages\flutter\lib\src\material\input_decorator.dart

изменить метод

TextStyle _getErrorStyle(ThemeData themeData) {
    final Color color = decoration.enabled?  themeData.errorColor : Colors.transparent;
    return themeData.textTheme.caption.copyWith(color: color).merge(decoration.errorStyle);
  }

будет

TextStyle _getErrorStyle(ThemeData themeData) {
    final Color color = themeData.errorColor;
    return themeData.textTheme.caption.copyWith(color: color).merge(decoration.errorStyle);
  }
0 голосов
/ 20 июня 2019

Вам не нужно изменять код Flutter, чтобы получить желаемое поведение. Просто добавьте InputDecorator с errorStyle к TextFormField, чтобы использовать любой цвет, который вы хотите для ошибки, который применяется как к включенным, так и к отключенным полям:

TextFormField(
  ...
  decoration: InputDecoration(
    errorStyle: TextStyle(
      color: Theme.of(context).errorColor, // or any other color
    ),
  ),
 ),
0 голосов
/ 23 марта 2019

Если вы не хотите использовать проверку по умолчанию в каком-либо поле, вам следует использовать TextField instant TextFormField и выполнять проверку с помощью контроллера.

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