Проверка формы флажка - PullRequest
       1

Проверка формы флажка

0 голосов
/ 26 ноября 2018

Как я могу проверить флажок во Флаттере Form?Любая другая проверка работает нормально, но флажок не показывает ошибку.Вот мой код:

FormField(
  validator: (value) {
    if (value == false) {
      return 'Required.';
    }
  },
  builder: (FormFieldState<dynamic> field) {
    return CheckboxListTile(
      value: checkboxValue,
      onChanged: (val) {
        if (checkboxValue == false) {
          setState(() {
            checkboxValue = true;
          });
        } else if (checkboxValue == true) {
          setState(() {
            checkboxValue = false;
          });
        }
      },
      title: new Text(
        'I agree.',
        style: TextStyle(fontSize: 14.0),
      ),
      controlAffinity: ListTileControlAffinity.leading,
      activeColor: Colors.green,
    );
  },
),

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Приведенный выше ответ верен, однако, если вы хотите отобразить сообщение об ошибке, которое больше соответствует макету сообщения об ошибке виджета TextFormField по умолчанию, затем оберните виджет Text в виджет Padding и присвойте ему шестнадцатеричный цвет# e53935.

Примечание. Может потребоваться настроить левый отступ в соответствии с виджетом CheckboxListTile, также включенным в виджет Padding.

Проверьте следующий код:

    bool _termsChecked = false;
    CheckboxListTile(
              activeColor: Theme.of(context).accentColor,
              title: Text('I agree to'),
              value: _termsChecked,
              onChanged: (bool value) => setState(() => _termsChecked = value),
              subtitle: !_termsChecked
                ? Padding(
                    padding: EdgeInsets.fromLTRB(12.0, 0, 0, 0), 
                    child: Text('Required field', style: TextStyle(color: Color(0xFFe53935), fontSize: 12),),)
                : null,
            ),
0 голосов
/ 26 ноября 2018

Вы можете попробовать что-то вроде этого:

CheckboxListTile(
  value: checkboxValue,
  onChanged: (val) {
    if (checkboxValue == false) {
      setState(() {
        checkboxValue = true;
      });
    } else if (checkboxValue == true) {
      setState(() {
        checkboxValue = false;
      });
    }
  },
  subtitle: !checkboxValue
      ? Text(
          'Required.',
          style: TextStyle(color: Colors.red),
        )
      : null,
  title: new Text(
    'I agree.',
    style: TextStyle(fontSize: 14.0),
  ),
  controlAffinity: ListTileControlAffinity.leading,
  activeColor: Colors.green,
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...