I'm trying to use flutter_form_builder: ^7.1.0
with form_builder_validators to create a form, but a getting undefined
errors at
onChanged: _onChanged,
and validator: FormBuilderValidators.compose
.
I tried following the example at flutter_form_builder but the example seems to be either incomplete or not up to date. When I try to add autovalidate: true,
I get another undefined error. How can I fix this?
class _CreateCompanyViewState extends State<CreateCompanyView> {
@override
void initState() {
super.initState();
}
final _formKey = GlobalKey<FormBuilderState>();
@override
Widget build(BuildContext context) {
FormBuilder(
key: _formKey,
child: Column(
children: <Widget>[
FormBuilderTextField(
name: 'age',
decoration: InputDecoration(
labelText: 'This value is passed along to the [Text.maxLines] attribute of the [Text] widget used to display the hint text.',
),
onChanged: _onChanged,
validator: FormBuilderValidators.compose([
FormBuilderValidators.required(context),
FormBuilderValidators.numeric(context),
FormBuilderValidators.max(context, 70),
]),
keyboardType: TextInputType.number,
),
Row(
children: <Widget>[
Expanded(
child: MaterialButton(
color: Theme.of(context).colorScheme.secondary,
child: Text("Submit", style: TextStyle(color: Colors.white),),
onPressed: () {
_formKey.currentState?.save();
if (_formKey.currentState!.validate()) {
print(_formKey.currentState!.value);
} else {
print("validation failed");
}
},
),
),
SizedBox(width: 20),
Expanded(
child: MaterialButton(
color: Theme.of(context).colorScheme.secondary,
child: Text("Reset", style: TextStyle(color: Colors.white),),
onPressed: () {
_formKey.currentState!.reset();
},
),
),
],
)
],
)
),
],
),
),
),
)));
}
CodePudding user response:
FormBuilderValidators
is not handling null value. You need to check null value, then perform others validators.
validator: FormBuilderValidators.compose([
(val) {
return val == null ? "Field is empty" : null;
},
FormBuilderValidators.required(context),
/// others validator
]),