uniform

Creator: coderz1093

Last updated:

0 purchases

TODO
Add to Cart

Description:

uniform

A form library for Flutter that handles form validation and state management gracefully,

with unified form representation.


Uniform handles the repetitive and annoying stuff—keeping track of values/errors/visited fields, orchestrating validation, and handling submission.
Features #

🪶 Lightweight & extensive.
🎮 Unified form representation using controllers.
🔄 Easy and customizable form validation API.
🔧 Built-in support for form submission and state management.
🛠️ Builders for quickly creating form fields.
🚀 Compatible with any state management solution or vanilla Flutter States.
🔒 Supports for global and local validators.

Getting started #
See the Installing section.
No extra configurations needed.
Usage #
Note: Detailed Usage documentation is coming soon.
For now, please refer to the example for more details.
final formController = FormController(
validators: {const InputFieldValidator.required()},
);

TextFieldController.create(formController, tag: 'email')
..setValidators({const EmailInputFieldValidator()});

FieldController<bool>.create(formController, tag: 'remember_me', autoValidate: true)
..setInitialValue(false)
..setValidators({const PasswordInputFieldValidator()});

InputForm(
controller: formController,
child: Column(
children: [
TextInputFieldBuilder(
tag: 'email',
builder: (_, controller, textController) {
return TextFormField(
controller: textController,
decoration: InputDecoration(
hintText: 'Email Address',
errorText: controller.error.message,
),
enabled: !controller.isSubmitted,
onChanged: controller.onChanged,
);
},
),
const SizedBox(height: 16),
InputFieldBuilder<bool>(
tag: 'remember_me',
builder: (context, controller, _) {
return CheckboxListTile(
title: const Text('Remember Me'),
value: controller.value,
controlAffinity: ListTileControlAffinity.leading,
enabled: !controller.isSubmitted,
onChanged: controller.onChanged,
);
},
),
const SizedBox(height: 40),
FilledButton(
onPressed: () {
if(formController.validate()){
print('Form Submitted!');
}
},
child: const Text('Submit'),
),
],
),
),
copied to clipboard

License

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

Files In This Product:

Customer Reviews

There are no reviews.