formz
A unified form representation in Dart which aims to simplify form representation and validation in a generic way.
0.8.1
178K downloads/mo
#898 most downloaded on pub.dev
VeryGoodOpenSource/formz
What this package is like to depend on
Last release 14 days ago
10 Aug 2026
Release timing varies
gaps range from 3 weeks to 1.8 years
Nearly every release is documented
notes for 14 of 15 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
17 releases · first in 2020
1 release in the last 12 months
see the full history below
Release timeline
17 releases · May 2020 to Aug 2026Releases
latest 17-
0.8.110 Aug 2026Release notes
Open source →0.8.1 (2026-08-06)
Features
Miscellaneous Chores
- deps: bump very_good_analysis from 6.0.0 to 7.0.0 (#135) (971f906)
- deps: bump very_good_analysis from 6.0.0 to 7.0.0 in /example (#134) (126237f)
- deps: bump very_good_analysis from 7.0.0 to 9.0.0 (#139) (3da77ad)
- deps: bump very_good_analysis from 9.0.0 to 10.0.0 (#143) (5e967a2)
- deps: upgrade very_good_analysis to ^10.3.0 (#155) (2bf536f), closes #154
- fixing changelog formatting (#132) (54eaea0)
Docs
Release notes
Open source →Features
Miscellaneous Chores
- deps: bump very_good_analysis from 6.0.0 to 7.0.0 (#135) (971f906)
- deps: bump very_good_analysis from 6.0.0 to 7.0.0 in /example (#134) (126237f)
- deps: bump very_good_analysis from 7.0.0 to 9.0.0 (#139) (3da77ad)
- deps: bump very_good_analysis from 9.0.0 to 10.0.0 (#143) (5e967a2)
- deps: upgrade very_good_analysis to ^10.3.0 (#155) (2bf536f), closes #154
- fixing changelog formatting (#132) (54eaea0)
Docs
-
0.8.022 Oct 2024Release notes
Open source →- chore: tighten dependencies (#127) - Note: This now requires Dart 3.5.0 or higher.
-
0.7.021 Feb 2024 -
0.6.120 Sep 2023 -
0.6.023 Mar 2023Release notes
Open source →- feat: add FormzInputErrorCacheMixin mixin
- feat: add isInProgressOrSuccess to FormzSubmissionStatusX
- feat: add purity check to FormzMixin
Release notes
Open source →- feat: add FormzInputErrorCacheMixin mixin
- feat: add isInProgressOrSuccess to FormzSubmissionStatusX
- feat: add purity check to FormzMixin
-
0.5.028 Feb 2023Release notes
Open source →- docs: add a caching example
- refactor: update very good analysis, workflows, flutter/dart version
- feat: update very good analysis
- feat: add dependabot
- BREAKING: this release promotes 0.5.0-dev.1 which brings breaking changes
Release notes
Open source →- docs: add caching example
- refactor: update very good analysis, workflows, flutter/dart version
- feat: update very good analysis
- feat: add dependabot
- BREAKING: this release promotes 0.5.0-dev.1 which brings breaking changes
-
0.5.0+128 Feb 2023Nothing published for this version
-
0.5.0-dev.103 May 2022 pre-releaseRelease notes
Open source →0.5.0-dev.1
-
docs: use nullable validator in
README -
feat: add example Flutter app
-
BREAKING: decouple purity, validity, and submission status
Changes
FormzStatusrenamed toFormzSubmissionStatus:
/// Enum representing the submission status of a form. enum FormzSubmissionStatus { /// The form is in the process of being submitted. inProgress, /// The form has been submitted successfully. success, /// The form submission failed. failure, /// The form submission has been canceled. canceled }
FormzInputclass no longer exposes astatus(FormzInputStatus). Instead there areisValidandisNotValidgetters:
class NameInput extends FormzInput<String, NameInputError> { const NameInput.pure() : super.pure(''); const NameInput.dirty({String value = ''}) : super.dirty(value); @override NameInputError? validator(String value) { return value.isNotEmpty == true ? null : NameInputError.empty; } } void main() { const name = NameInput.pure(); print(name.isValid); // false print(name.isNotValid); // true const joe = NameInput.dirty(value: 'joe'); print(joe.isValid); // true print(joe.isNotValid); // false }
FormzInputhas adisplayErrorgetter which returns an error to display if the input is not valid and has been modified by the user (closes #44)
void main() { const name = NameInput.pure(); print(name.displayError); // null const invalid = NameInput.dirty(value: ''); print(name.displayError); // NameInputError.empty }
- Renamed
puretoisPurefor consistency
Release notes
Open source →-
docs: use nullable validator in
README -
feat: add example Flutter app
-
BREAKING: decouple purity, validity, and submission status
Changes
FormzStatusrenamed toFormzSubmissionStatus:
/// Enum representing the submission status of a form. enum FormzSubmissionStatus { /// The form is in the process of being submitted. inProgress, /// The form has been submitted successfully. success, /// The form submission failed. failure, /// The form submission has been canceled. canceled }FormzInputclass no longer exposes astatus(FormzInputStatus). Instead there areisValidandisNotValidgetters:
class NameInput extends FormzInput<String, NameInputError> { const NameInput.pure() : super.pure(''); const NameInput.dirty({String value = ''}) : super.dirty(value); @override NameInputError? validator(String value) { return value.isEmpty ? NameInputError.empty : null; } } void main() { const name = NameInput.pure(); print(name.isValid); // false print(name.isNotValid); // true const joe = NameInput.dirty(value: 'joe'); print(joe.isValid); // true print(joe.isNotValid); // false }FormzInputhas adisplayErrorgetter which returns an error to display if the input is not valid and has been modified by the user (closes #44)
void main() { const name = NameInput.pure(); print(name.displayError); // null const invalid = NameInput.dirty(value: ''); print(name.displayError); // NameInputError.empty }- Renamed
puretoisPurefor consistency
-
-
0.4.114 Oct 2021 -
0.4.026 Apr 2021Release notes
Open source →- BREAKING: opt into null safety
- feat!: upgrade Dart SDK constraints to
>=2.12.0-0 <3.0.0
Release notes
Open source →- BREAKING: opt into null safety
- feat!: upgrade Dart SDK constraints to
>=2.12.0-0 <3.0.0
-
0.4.0-nullsafety.022 Dec 2020 pre-releaseRelease notes
Open source →- BREAKING: opt into null safety
- feat!: upgrade Dart SDK constraints to
>=2.12.0-0 <3.0.0
-
0.3.208 Oct 2020 -
0.3.114 Sep 2020 -
0.3.030 Jul 2020Release notes
Open source →- Add
FormzMixin - Fix
Formz.validateto takepureinto consideration - Lint improvements
- Add
-
0.2.015 May 2020Release notes
Open source →- Remove redundant extensions on
FormzInputStatus - Add
isValidatedextension onFormzStatus - Add
invalidgetter toFormzInput
- Remove redundant extensions on
-
0.1.015 May 2020 -
0.0.108 May 2020