reactive_forms
This is a model-driven approach to handling form inputs and validations, heavily inspired in Angular Reactive Forms.
18.2.2
80K downloads/mo
#1216 most downloaded on pub.dev
joanpablo/reactive_forms
What this package is like to depend on
Last release 8 months ago
22 Dec 2025
Release timing varies
gaps range from 8 days to 12 months
Nearly every release is documented
notes for 115 of 115 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
115 releases · first in 2020
3 releases in the last 12 months
see the full history below
Release timeline
115 releases · Jul 2020 to Dec 2025
2021
2022
2023
2024
2025
2026
Releases
latest 60 of 115-
18.2.222 Dec 2025Release notes
Open source →Fixes
- Correct
hasErrorsto check child controls.
Enhances
- Improve
errorsgetter performance. - Optimize list and map access.
- Correct
-
18.2.021 Nov 2025Release notes
Open source →Features
- Allowed overwriting default value on reset. Added an
overwriteDefaultValueparameter to theFormControl.reset()method. WhenoverwriteDefaultValueistrue, the value passed toreset()becomes the new default value for the control. - Enhanced
FormControlreset method. Introduced anonNullableproperty to theFormControlconstructor to control the behavior of thereset()method. WhennonNullableistrue(the default), callingreset()without a value will reset the control to its initial value. WhennonNullableisfalse, callingreset()without a value will reset the control tonull. - Exposed
defaultValueof theFormControl.
- Allowed overwriting default value on reset. Added an
-
18.1.219 Nov 2025Release notes
Open source →Fixes
- Fixed an issue where enabling or disabling a
FormGroupandFormArraydid not correctly propagate the enabled/disabled state to all of its child controls.
- Fixed an issue where enabling or disabling a
-
18.1.101 Jul 2025Release notes
Open source →Fixes
- Fix
NumberValidatorto correctly handle decimal numbers with trailing zeros. - Improve
NumberValidatorto correctly validate numbers with multiple decimal points, single dot, and dot at the end.
- Fix
-
18.1.001 Jul 2025Release notes
Open source →- Add
oneOfvalidator to the list of validators. - Add
debouncedasync validator that allows to specify a custom debounce time for a single validator. - The
Validators.delegateAsync()function now accepts an optionaldebounceTimeparameter, defaulting to 0. This allows immediate execution or custom debouncing for asynchronous validation.
- Add
-
18.0.113 Jun 2025Release notes
Open source →Features
- Add
allowNulloptional parameter to theCompareValidator. - The FormControl.reset() method has been updated to align with the common expectation that resetting a control without specifying a new value should revert it to its initial state.
- The
resetmethod inAbstractControl(and by inheritanceFormControl) has been updated to correctly handle thedisabledstate. If thedisabledparameter is not provided to theresetmethod, the control'sdisabledstatus will now revert to the initialdisabledvalue that was set when the control was constructed.
Fixes
- Fixed broken reactivity with the
PopScope.
- Add
-
18.0.023 Apr 2025Release notes
Open source →- Moved
examplesproject out of the package's code, and uploaded to its own repo.
Breaking changes
- Upgraded Flutter minimum version to
3.29.0. - Added missing fields to widgets:
- ReactiveCheckbox:
semanticLabel. - ReactiveCheckboxListTile:
checkboxSemanticLabel. - ReactiveDatePicker:
barrierColor,barrierDismissible,barrierLabel,switchToInputEntryModeIcon,switchToCalendarEntryModeIcon,onDatePickerModeChange. - ReactiveTimePicker:
barrierColor,barrierDismissible,barrierLabel,orientation,switchToInputEntryModeIcon,switchToTimerEntryModeIcon. - ReactiveForm:
onPopInvokedWithResult(used inPopScope), removed deprecatedonPopInvoked. - ReactiveFormPopScope:
onPopInvokedWithResult(used inPopScope), removed deprecatedonPopInvoked. - ReactiveFormBuilder:
onPopInvokedWithResult(used inPopScope), removed deprecatedonPopInvoked. - ReactiveRadioListTile:
radioScaleFactor. - ReactiveSlider:
padding,allowedInteraction. - ReactiveSwitch:
padding,trackOutlineWidth. - ReactiveSwitch.adaptive:
thumbIcon,trackOutlineWidth,trackOutlineColor,padding,applyCupertinoTheme,onFocusChange. - ReactiveTextField:
groupId,ignorePointers,cursorErrorColor,stylusHandwritingEnabled(removed deprecatedscribbleEnabled),onTapAlwaysCalled,onTapUpOutside,statesController
- ReactiveCheckbox:
- Renamed
ReactiveSwitchListTile.adaptativetoReactiveSwitchListTile.adaptive
Fixes
- Added
constkeyword toDefaultPatternEvaluatorandRegExpPatternEvaluatorconstructors.
- Moved
-
17.0.110 May 2024Release notes
Open source →- Reduce
intldependency constraint to match Flutter 3.16.0. - NumberValidator allows null values.
- Reduce
-
17.0.030 Mar 2024Release notes
Open source →Breaking changes
- Removed deprecated
onWillPopfromReactiveFormandReactiveFormBuilderwidgets. It was replaced with thePopScopewidget. Validators.numberallows now to define negative numbers and decimal numbers with the addition of two optional argumentsallowNegativesandallowedDecimals.
Features
- Add
canPopandonPopInvokedtoReactiveFormandReactiveFormBuilderwidgets.
- Removed deprecated
-
16.1.120 Oct 2023 -
16.1.021 Aug 2023Release notes
Open source →Features
- Add
markAsPending()method toAbstractControlto allow set the status to PENDING by demand.
- Add
-
16.0.413 Aug 2023Release notes
Open source →Fixes
- Add missing properties to
ReactiveSwitchListTile.adaptative()widget. - Add
showError()toReactiveCheckboxandReactiveCheckboxListTilewidgets. This does not display any error messages but it is now compatible with the Flutter builtin behavior of Checkboxes when Material 3 is enabled (ThemeData(useMaterial3: true)) in the active App Theme.
Enhances
- Update
Readme.mdfile with testing examples in the sectionReactiveForm vs ReactiveFormBuilder which one?
- Add missing properties to
-
16.0.325 Jul 2023Release notes
Open source →Fixes
- Fix an issue with
FormGroupandFormArraywere recursiveRaw Valuewas not working properly.
- Fix an issue with
-
16.0.216 Jul 2023Release notes
Open source →Fixes
- Fix an issue with
FormBuilderwhen trying to build a control with a nullable '?' data type. - Fix an issue with
FormGroupthat was not triggering the eventcollectionChangeswhen a control is removed. - Fix an issue with
FormGroupandFormArraywhen trying to find a control with a nullable '?' data type.
- Fix an issue with
-
16.0.107 Jul 2023Release notes
Open source →Fixes
- Update the intl dependency version, because in flutter 3.10,
flutter_localizationsdepends on intl 0.18.0.
- Update the intl dependency version, because in flutter 3.10,
-
16.0.025 Jun 2023Release notes
Open source →Breaking Changes
- Flutter >= 3.10 required for this version.
Fixes
- Updated some documentation.
- Expose validator classes to allow direct instantiation.
-
15.0.025 May 2023Release notes
Open source →Breaking Changes
- All validators have been changed to classes with
constconstructors. - The Asynchronous Validator is now a class from where any custom async validator can inherit.
Features
- A new validator
Validators.delegate(...)has been introduced to be used with a custom validation function. - A new validator
Validators.delegateAsync(...)has been introduced to be used with a custom async validation functions.
- All validators have been changed to classes with
-
14.3.001 Apr 2023Release notes
Open source →- Fix the inkwell ripple effect in the ReactiveDropdownField.
- Add some other minor fixes.
-
14.2.030 Jan 2023 -
14.1.007 Aug 2022Release notes
Open source →Enhances
- Create new widget ReactiveFocusableFormField as a parent widget for all other widgets that requires to do focus management.
-
14.0.004 Aug 2022Release notes
Open source →Breaking Changes
- The definition of validation messages is now more consistent.
- Methods like
onTabinReactiveTextFieldandonChangedinReactiveDropdownFieldnow provides the control as argument of the callback.
Enhances
- Add events like
onChanged,onEditingCompleteto reactive widgets.
Features
- Add widget ReactiveFormConfig to globally define validation messages at Flutter application level. This reliefs the need to define validation messages in each reactive widget.
-
13.0.020 May 2022 -
12.0.011 Apr 2022Release notes
Open source →Fix
- Update project to new Android wrappers in order to be able to run the example using latest Android SDK changes.
-
11.1.011 Apr 2022Release notes
Open source →Enhances
- Add Focus handling for several reactive widgets:
- ReactiveSlider
- ReactiveSwitch
- ReactiveRadio
- ReactiveRadioListTile
- ReactiveCheckbox
- ReactiveCheckboxListTile
- Add Focus handling for several reactive widgets:
-
11.0.131 Jan 2022Release notes
Open source →Fix
- Fix issues in ReactiveDatePicker when control value was before or after the range of firstDate and lastDate
Enhances
- Add optional argument initialDate to the ReactiveDatePicker.
-
11.0.027 Dec 2021Release notes
Open source →Breaking Changes
- Reactive Forms is now migrated to Flutter 2.8.0.
Enhances
- Update reactive widgets with extra properties presents in Flutter 2.8.0.
-
10.7.027 Dec 2021Release notes
Open source →Features
- Expose TextEditingController as a property of the ReactiveTextField for text selection purposes only.
-
10.6.822 Dec 2021Release notes
Open source →Fix
- Fix Async Validators that overrides validations errors from Sync Validators
-
10.6.719 Dec 2021 -
10.6.603 Dec 2021Release notes
Open source →Enhances
- Improve the Array example in the demo application
- Better exception handler when creating FormGroups with controls that contains character '.' in the name of the control.
-
10.6.521 Nov 2021Release notes
Open source →Enhances
- Add an example of deleting item from a FormArray in the example folder project.
- Make public the previously private class InheritedStreamer
-
10.6.429 Oct 2021 -
10.6.329 Oct 2021Release notes
Open source →Enhances
- Add documentation of new advanced reactive widgets.
Fix
- Minor documentation fix.
-
10.6.222 Sep 2021Release notes
Open source →Enhances
- Converted ReactiveForm widget from Stateful to Stateless widget.
-
10.6.122 Sep 2021Release notes
Open source →Enhances
- Update the lint code analysis to use the las package lints.
- Minor internal code checks and improvements.
-
10.6.005 Aug 2021Release notes
Open source →Enhances
- Added optional argument to Validators.mustMatch that allows to define if we want to mark the matchingControlName control as DIRTY when the control is invalid. See related issue.
- Minor changes in model classes that allows to create custom AbstractControl implementations
-
10.5.016 Jul 2021 -
10.4.130 May 2021Release notes
Open source →Enhances
- Add minor internal changes for handling focus node in reactive text fields.
-
10.4.029 May 2021Release notes
Open source →Fix
- Add Flutter sdk version restriction in pubspec.yaml file.
- Fix Validators.compare in release mode that has different behavior from debug mode.
-
10.3.019 May 2021Release notes
Open source →Features
- Add method in FormGroup that allows to remove a control by its name.
Enhances
- Add missing extra properties to ReactiveRadioListTile and ReactiveRadio widgets.
- Add a SliderIntValueAccessor that allows ReactiveSlider to bind to controls of type int.
-
10.2.013 Apr 2021Release notes
Open source →Fix
- Fix error when defining a ReactiveTextField with dynamic type and bound the widget with controls other than String.
Enhances
- Add the optionally extra argument autoValidate to the method AbstractControl.setValidators to recalculate the validaity of the control after set the new validators without explicitly call updateValueAndValidity on that control.
-
10.1.013 Apr 2021Release notes
Open source →Features
- Add/Clear validators dynamically
Fix
- Fix error when defining a ReactiveTextField without specifying a model data type
Enhances
- Change the data type of ValidatorFunction to returns Map<String, dynamic> instead of Map<String, Object>
-
10.0.411 Apr 2021Release notes
Open source →Fix
- Fix exception when focus a control that does not exist in a group
Enhances
- Better type definition in a control value accessor within a ReactiveFormField
-
10.0.328 Mar 2021 -
10.0.225 Mar 2021Release notes
Open source →Enhances
- Add minor changes in Validators.min and Validators.max for handlig type checks
- Add minor changes in ReactiveValueListenableBuilder for handlig type checks
-
10.0.124 Mar 2021Release notes
Open source →Fix
- Fix the error when defining a ReactiveFormField<dynamic> (related to control value accessor)
-
10.0.024 Mar 2021Release notes
Open source →Breaking changes
- Reactive Forms is now migrated to Flutter 2.x.
- Reactive Forms is now Null-safety.
- New Definitions in Custom Reactive Widgets. ReactiveFormField now defines the data type of the model (control) and the data type of the view (widget).
- Validators.requiredTrue now has the 'requiredTrue' validation message and not 'requiredEquals' as in previous versions.
Features
- Now you can specify a different validation message to the Validators.pattern validator.
-
9.1.004 Mar 2021 -
9.0.203 Mar 2021Release notes
Open source →Fix
- Remove Validators String type to fix casts errors when calling form.control('').validators in a control with a non dynamic type validator.
-
9.0.101 Mar 2021Release notes
Open source →Fix
- Add minor changes to successfully pass pub dev static analysis.
- Add Library documentation.
-
9.0.027 Feb 2021Release notes
Open source →Breaking changes
- An enhanced strongly typed system to improve casting at compilation time and improve casting exception handler in runtime. This version was created to be compatible with analysis options in "implicit-casts: false" and "implicit-dynamic: false".
-
8.0.321 Jan 2021 -
8.0.221 Jan 2021 -
8.0.108 Jan 2021Release notes
Open source →Fix
- If a control is disabled, then it doesn't fire state change again when call markAsDisabled.
-
8.0.006 Jan 2021Release notes
Open source →Breaking changes
- Upgrade Reactive Forms to Flutter 1.20
Features
- Add intl package and and optional argument to DateTimeValueAccessor to specify the format of the date.
- Add some extra properties to reactive forms widgets.
-
7.6.326 Dec 2020Release notes
Open source →Fix
- Set cursor at the end of the text when set value to reactive text field from the FormControl.
-
7.6.213 Dec 2020 -
7.6.109 Dec 2020 -
7.6.009 Dec 2020Release notes
Open source →Features
- Expose focus controller of the FormControl. Now is possible to access UI FocusNode with in a control through control.focusController.focusNode.
-
7.5.009 Dec 2020Release notes
Open source →Features
- Add argument focusNode to ReactiveTextField to provide a custom FocusNode.
Enhances
- Add some improvement to TimeOfDayValueAccessor.
- Add some improvement to example application.