带有验证器的FormField不显示错误消息

时间:2018-10-30 16:42:31

标签: flutter

我有一个FormField小部件,其中的构建器返回了一个DropdownButton和一个验证器,但是当验证失败时,该小部件不会显示我的错误消息。

  FormField(
builder: (FormFieldState state) {
  return DropdownButtonHideUnderline(
      child: DropdownButton(
        value: _gender,
        isDense: true,
        hint: Text(AppLocalizations.of(context).genderSelect),
        onChanged: (String newValue) {
          print(newValue);
          setState(() {
            _gender = newValue;
            state.didChange(newValue);
          });
        },
        items: _genders(),
      )
  );
},
initialValue: null,
validator: (value) {
  if(value == null){
    print('Gender is null');
    return AppLocalizations.of(context).genderRequired;
  }
},

See?

2 个答案:

答案 0 :(得分:0)

我找到了一种解决方法/解决方案here

答案 1 :(得分:0)

我使用 builder 方法提供的变量 state 解决了这个问题。 首先,使用 state.hasError 检查是否有错误(如果验证方法返回任何,则更改为真)其次,使用 state.errorText 绘制带有错误值的小部件。 我的构建器方法如下所示:

builder: (FormFieldState<dynamic> state){
  return Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: [

      //here your widget with the value

      if ( state.hasError)...[
        Container(
          child: Text(state.errorText),
        ),
      ]

    ]
  );
}