fifty_forms 0.1.0
fifty_forms: ^0.1.0 copied to clipboard
Production-ready form building with validation, multi-step wizards, and draft persistence for the Fifty Flutter Kit.
Changelog #
All notable changes to fifty_forms will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2026-01-21 #
Initial release of the fifty_forms package.
Added #
Core Components
FiftyFormController- Centralized form state management with reactive updates- Field registration and unregistration
- Value get/set with automatic validation
- Form-level validation and submission
- Async validation with debouncing
- Validation change callbacks
FieldState<T>- Immutable field state model- Value, error, touched, dirty, and validating states
isValidandhasErrorcomputed propertiescopyWithfor immutable updates
FormStatusenum - Form lifecycle states (idle, validating, submitting, submitted, error)
Validators (25 built-in)
- Required:
Required- Non-null, non-empty values (supports strings, collections, maps) - String Validators:
MinLength(n)- Minimum string lengthMaxLength(n)- Maximum string lengthPattern(regex)- Regular expression matchingEmail()- Valid email formatUrl()- Valid URL format with http/https/ftp schemesAlphaNumeric()- Letters and numbers only
- Number Validators:
Min(n)- Minimum numeric valueMax(n)- Maximum numeric valueRange(min, max)- Value within range (inclusive)Integer()- Whole numbers onlyPositive()- Greater than zero
- Date Validators:
MinDate(date)- On or after specified dateMaxDate(date)- On or before specified dateMinAge(years)- Minimum age validationFutureDate()- Must be in the futurePastDate()- Must be in the past
- Password Validators:
HasUppercase()- Contains uppercase letterHasLowercase()- Contains lowercase letterHasNumber()- Contains digit (0-9)HasSpecialChar()- Contains special character
- Comparison Validators:
Equals(fieldName)- Equals another field's valueNotEquals(fieldName)- Differs from another field
- Custom Validators:
Custom<T>(fn)- Synchronous custom validation functionAsyncCustom<T>(fn)- Asynchronous validation with configurable debounce
- Composite Validators:
And<T>(validators)- All validators must passOr<T>(validators)- At least one validator must pass
Form Field Wrappers (9 field types)
FiftyTextFormField- Text input with FiftyTextFieldFiftyDropdownFormField- Dropdown selection with FiftyDropdownFiftyCheckboxFormField- Checkbox toggle with FiftyCheckboxFiftySwitchFormField- Switch toggle with FiftySwitchFiftyRadioFormField- Radio button selectionFiftySliderFormField- Slider input with FiftySliderFiftyDateFormField- Date picker integrationFiftyTimeFormField- Time picker integrationFiftyFileFormField- File picker integrationFormFieldBase- Base class for custom field implementations
UI Widgets (9 components)
FiftyForm- Form container with controller bindingFiftySubmitButton- Submit button with loading state and validity trackingFiftyFormProgress- Step progress indicator for multi-step formsFiftyMultiStepForm- Multi-step wizard container with navigationFiftyFormArray- Dynamic repeating field groups with animationsFiftyFormError- Form-level error displayFiftyFieldError- Field-level error displayFiftyValidationSummary- Summary of all validation errorsFiftyFormField- Generic field wrapper
Models
FormStep- Step definition for multi-step forms- Title, description, field names
- Optional step support
- Step-level custom validation
ValidationResult- Validation result container
Persistence
DraftManager- Auto-save and restore form drafts- GetStorage integration
- Configurable debounce delay
- Manual and automatic save/restore
- Draft existence checking
Example App
- Login form demo (simple validation)
- Registration form demo (complex validation with async username check)
- Multi-step form demo (wizard with progress indicator)
- Dynamic form demo (array fields with add/remove)
Technical Details #
- Full FDL v2 compliance (consumes fifty_tokens and fifty_ui)
- Async validation with configurable debounce (default 300ms)
- Field state tracking (touched, dirty, validating)
- Form-level and step-level validation
- Array field support with automatic index management
- Lightweight persistence via GetStorage
- Reactive updates via ChangeNotifier
- Comprehensive Dartdoc documentation on all public APIs