formdator 0.8.2 formdator: ^0.8.2 copied to clipboard
A formidable collection of Flutter form field validators that can be selected and grouped into various combinations through composition — Decorator Pattern.
formdator #
Contents #
Overview #
Formidable Validator — Formdator is a fully object-oriented package for validating Flutter form fields. Its main benefits, compared to all other similar packages, include:
- An object-oriented mindset: the elements for validation are immutable objects that can be combined in various configurations.
- Classes with short — yet meaningful — names like
Req
for a required field;ReqEmail
for a non-empty, well-formed email;Len.max
for a maximum number of characters; and so on. - Easy-to-compose validators: e.g. the command
Trim(Email())
produces a validator that trims the entered email before validating it. - You can apply multiple validation rules at once by using the
Pair
orRules
classes. - Write Less and Do More: built-in, ready-to-use set of compound validators.
E.g. to validate an email limited to, say, 50 chars, simply pass an instance
of
Email.len(50)
orReqEmail.len(50)
as the validation argument.
For easier integration with the Flutter form fields, every validator implements
the call()
method so that any validator object can be called as a function —
Callable Classes.
Getting Started #
A flexible package provides components that can be selected and grouped in various combinations so that user requirements can be fulfilled.
The code below shows how you can easily group the classes Rules
, Req
, Len
,
and Email
to create a kind of 'email-required-max-50-characters' constraint.
@override
Widget build(BuildContext context) {
return TextFormField(
validator: Rules<String>([
Req(),
Len.max(50),
Email(),
]),
keyboardType: TextInputType.emailAddress,
);
}
Or — even better — use the compound validator ReqEmail
to perform the same
task.
@override
Widget build(BuildContext context) {
return TextFormField(
validator: ReqEmail.len(50),
keyboardType: TextInputType.emailAddress,
);
}
The shorter command ReqEmail.len(50)
is equivalent to the much longer command
Rules<String>([Req(), Len.max(50), Email()])
— write less; do more!
List of Validators #
For a complete list of validators with detailed information about each one (constructors, parameters, etc.):
Grouped by Category #
- brazil — validators related to Brazil (Cep, Cnpj, Cpf, etc).
- core — core validators (Len, Pair, Req, Rules, Trim, etc).
- logic — validation logic and unit testing (Equal, Ok, Nok, ValueBack, etc).
- net — internet (Email, Ipv4, Ipv6, Mac, Url, etc).
- numeric — validators related to numbers or digits (Digit, Hex, Num, etc).
Demo application #
The demo application provides a fully working example, focused on demonstrating exactly four validators in action — Pair, ReqLen, ReqEmail, and Equal. You can take the code in this demo and experiment with it.
To run the demo application:
git clone https://github.com/dartoos-dev/formdator.git
cd formdator/example/
flutter run -d chrome
This should launch the demo application on Chrome in debug mode.