TextFormField(
validator: validator,
),在textfield中,有一个名为validator的属性,可以与Form小部件一起使用来显示错误。我需要在我的自定义小部件中制作一个验证器,它也可以在Form小部件中工作。怎么做?
假设我的自定义小部件如下所示:
class MyCustomWidget extends StatelessWidget {
const MyCustomWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
height: 100,
color: Colors.green,
);
}
}如何使我自己的验证器在可以在Form小部件内工作的绿色容器下面显示错误?
发布于 2022-04-21 04:36:53
是的,您可以像下面这样创建一个自定义表单字段。
class CounterFormField extends FormField<int> {
CounterFormField({
FormFieldSetter<int> onSaved,
FormFieldValidator<int> validator,
int initialValue = 0,
bool autovalidate = false
}) : super(
onSaved: onSaved,
validator: validator,
initialValue: initialValue,
autovalidate: autovalidate,
builder: (FormFieldState<int> state) {
return Column(
children: <Widget>[
Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
IconButton(
icon: Icon(Icons.remove),
onPressed: () {
state.didChange(state.value - 1);
},
),
Text(
state.value.toString()
),
IconButton(
icon: Icon(Icons.add),
onPressed: () {
state.didChange(state.value + 1);
},
),
],
),
state.hasError?
Text(
state.errorText,
style: TextStyle(
color: Colors.red
),
) :
Container()
],
);
}
);使用
CounterFormField(
autovalidate: false,
validator: (value) {
if (value < 0) {
return 'Negative values not supported';
}
},
onSaved: (value) => this._age = value,
)https://stackoverflow.com/questions/71948813
复制相似问题