flutterdart-null-safetyflutter-form-builder

Flutter_form_builder errors


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();
                          },
                        ),
                      ),
                    ],
                  )
                ],
              )
            ),
            ],
          ),
        ),
      ),
    )));
  }

Solution

  • 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
    ]),