NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1267 most downloaded on pub.dev
This is a model-driven approach to handling form inputs and validations, heavily inspired in Angular Reactive Forms.
Last release 9 months ago
22 Dec 2025
Release timing varies
gaps range from 8 days to 12 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
115 releases · first in 2020
One column per quarter.
A disabled ReactiveDropdownField now tale into account the _selectedItemBuilder_ method to show the _disabledHint_.
Add FormGroup.rawValue and FormArray.rawValue to get the value of groups and array including any disabled controls.
Fix exception when call FormGroup.addAll in a sub-group with parent.
Add method patchValue to FormControl, FormGroup and FormArray to update partially the control value.
Add Validators.any that requires any element of the control's iterable value satisfies a test function.
Add readOnly argument as not nullable in ReactiveDropdownField.
Add readOnly argument in ReactiveDropdownField constructor to enable/disable widget.
Dispose FocusNode after FocusNodeController is disposed.
Improves code documentation for control, group and array constructors.
Add async validators to FormGroup and FormArray.
Fix now AbstractControl.removeError doesn't marks the control as dirty by default.
Fix Validators.compare in DateTime controls type.
Initialize a FormGroup as _disabled_ is now possible with optional constructor argument.
Fix Validators.maxLength and Validators.minLength when control value is null.
Add new control value accessor Iso8601DateTimeValueAccessor that brings the possibility to bind a ReactiveDateTimePicker widget to a control of type S
Fix when the execution of asynchronous validators completes the control is not marked as dirty.
Add new AbstractControl validator Validators.contains.
Change ReactiveFormField.validationMessages from a Map to a Function that receives the instance of the control and returns the Map with the customized
Fix error when trying to get a deep control within an array of groups.
Add arguments emitEvent and updateParent to FormArray.clear() method.
Changes all arguments of data type Iterable with List data type to force compiler errors when not correctly cast _MappedListIterable_ with _List_.
Fix control value accessor that doesn't update the control when LengthLimitingTextInputFormatter reached the max length.
Fix error when dispose a FocusController already registered in a control.
Add big refactor in focus handlers of a FormControl. Change argument data type in FormControl.focusChanges event, from FocusEvent to _bool_.
Add optionally argument _showErrors_ to ReactiveTextField and ReactiveDropdownField to customize when to show up validations messages. Validation mess
Rename FormControl.focused by FormControl.hasFocus.
Fix add custom valueAccessor to text field.
Fix Validators.min and Validators.max with non comparable controls.
Rename _touch()_ and _untouch()_ by _markAsTouched()_ and _markAsUntouched()_
Fix FormBuilder.group() with initial value in null.
Fix async update in InheritedStreamer widget that raised exception when declare a form group in a stateless widget.
FormControl.reset() can now set the disabled status of the control as an optional argument.
Fix Luhn algorithm in credit card validator.
FormGroup.reset() marks control as untouched and hide UI validation errors.
Fixes:
Features:
Fixed card number length in _Validators.creditCard_
Minor changes and code documentation.
Optimized FormGroup and FormArray value gets.
fixed ReactiveDropdownField.onChanged not triggered when control value didn't changes
Minor fixes in _ReactiveDropdownField_.
- Minor fixes.
Added basic implementation of FormBuilder to build _FormGroup_ easily.
Now ReactiveDropdownField not set value of control to null when no matching item founded.
Added onWillPop to ReactiveForm widget.
See Migration Guide to see how to migrate from version 1.x to 2.x.
Async validators now have a debounce timer in milliseconds that can be passed as argument to FormControl. This is useful for example to reduce request
Composing validators with Validators.compose
Added utilities an extensions to _AbstractControl_
FormArray and FormGroup now notify value changes when a control without validators changes its value.
_FormGroup.touch_ mask all controls as touched.
FormGroup.touch mask all controls as touched.
Renamed FormGroup.formControl to FormGroup.control and FormArray.formControl to FormArray.control to get controls by name.
ReactiveValueListenableBuilder.builder now pass the control as parameter instead of the value so you can get access to the control within the builder function.
Added FormGroup.controls and FormArray.controls to iterate over child controls.
Bonus widgets:
Fixed ReactiveCheckbox and ReactiveCheckboxListTile exception when binding with FormControl with null value.
Added _ReactiveTextField.onSubmitted_ for an example of how to handle moving to the next/previous field when using _TextInputAction.next_ and _TextInp
FormArray now correctly notify status depending of children status.
Async Validators (only FormControl for now...)
Added class ValidationMessage for common validation messages key as: _required_, _email_, etc.
- Added an example application
### Predefined validators - Validators.required - Validators.email - Validators.number - Validators.minLength - Validators.maxLength - Validators.patt
Your coding agent can read these notes before it upgrades. Set up the MCP server →