formz

Creator: coderz1093

Last updated:

Add to Cart

Description:

formz

📝 Formz #


Developed with 💙 by Very Good Ventures 🦄






A unified form representation in Dart.
Formz aims to simplify form representation and validation in a generic way.
Create a FormzInput #
import 'package:formz/formz.dart';

// Define input validation errors
enum NameInputError { empty }

// Extend FormzInput and provide the input type and error type.
class NameInput extends FormzInput<String, NameInputError> {
// Call super.pure to represent an unmodified form input.
const NameInput.pure() : super.pure('');

// Call super.dirty to represent a modified form input.
const NameInput.dirty({String value = ''}) : super.dirty(value);

// Override validator to handle validating a given input value.
@override
NameInputError? validator(String value) {
return value.isEmpty ? NameInputError.empty : null;
}
}
copied to clipboard
Interact with a FormzInput #
const name = NameInput.pure();
print(name.value); // ''
print(name.isValid); // false
print(name.error); // NameInputError.empty
print(name.displayError); // null

const joe = NameInput.dirty(value: 'joe');
print(joe.value); // 'joe'
print(joe.isValid); // true
print(joe.error); // null
print(name.displayError); // null
copied to clipboard
Validate Multiple FormzInput Items #
const validInputs = <FormzInput>[
NameInput.dirty(value: 'jan'),
NameInput.dirty(value: 'jen'),
NameInput.dirty(value: 'joe'),
];

print(Formz.validate(validInputs)); // true

const invalidInputs = <FormzInput>[
NameInput.dirty(),
NameInput.dirty(),
NameInput.dirty(),
];

print(Formz.validate(invalidInputs)); // false
copied to clipboard
Automatic Validation #
class LoginForm with FormzMixin {
LoginForm({
this.username = const Username.pure(),
this.password = const Password.pure(),
});

final Username username;
final Password password;

@override
List<FormzInput> get inputs => [username, password];
}

void main() {
print(LoginForm().isValid); // false
}
copied to clipboard
Caching validation results #
For cases where the validator method has an expensive implementation, consider using the FormzInputErrorCacheMixin mixin to cache the error result and improve performance.
import 'package:formz/formz.dart';

enum EmailValidationError { invalid }

class Email extends FormzInput<String, EmailValidationError>
with FormzInputErrorCacheMixin {
Email.pure([super.value = '']) : super.pure();

Email.dirty([super.value = '']) : super.dirty();

static final _emailRegExp = RegExp(
r'^[a-zA-Z\d.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z\d-]+(?:\.[a-zA-Z\d-]+)*$',
);

@override
EmailValidationError? validator(String value) {
return _emailRegExp.hasMatch(value) ? null : EmailValidationError.invalid;
}
}
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.