NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #717 most downloaded on pub.dev
A unified form representation in Dart which aims to simplify form representation and validation in a generic way.
Last release 1 months 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
One column per quarter.
upgrade to Dart 3.12 ( #152 ) ( 24e443c ), closes #151
chore: tighten dependencies ( #127 ) - Note: This now requires Dart 3.5.0 or higher.
feat!: update Dart version constraints to "^3.0.0"
fix(example): update validation to throw on empty values
feat: add FormzInputErrorCacheMixin mixin
BREAKING : this release promotes 0.5.0-dev.1 which brings breaking changes
Nothing published for this version
docs: use nullable validator in README
docs: use nullable validator in README
feat: add example Flutter app
BREAKING: decouple purity, validity, and submission status
FormzStatus renamed to FormzSubmissionStatus:/// 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
}FormzInput class no longer exposes a status (FormzInputStatus). Instead there are isValid and isNotValid getters: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
}FormzInput has a displayError getter 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
}pure to isPure for consistencydocs: use nullable validator in README
feat: add example Flutter app
BREAKING: decouple purity, validity, and submission status
FormzStatus renamed to FormzSubmissionStatus:/// 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
}
FormzInput class no longer exposes a status (FormzInputStatus). Instead there are isValid and isNotValid getters: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
}
FormzInput has a displayError getter 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
}
pure to isPure for consistencyfeat: add submissionCanceled to FormzStatus
submissionCanceled to FormzStatusBREAKING : opt into null safety
>=2.12.0-0 <3.0.0>=2.12.0-0 <3.0.0feat!: upgrade Dart SDK constraints to >=2.12.0-0 <3.0.0
>=2.12.0-0 <3.0.0- chore: fix code formatting - ci: update to Dart 2.10.0
Allow value to be null in FormzInput
null in FormzInputFix Formz.validate to take pure into consideration
FormzMixinFormz.validate to take pure into considerationRemove redundant extensions on FormzInputStatus
FormzInputStatusisValidated extension on FormzStatusinvalid getter to FormzInputAdd extensions on FormzInputStatus
FormzStatusFormzInputStatusInitial Release of the formz.
Initial Release of the formz.
Your coding agent can read these notes before it upgrades. Set up the MCP server →