juice_form
Canonical specification for the juice_form companion package
Purpose
Form handling with validation, field state management, and submission workflows.
Dependencies
External: None
Juice Packages: None
Architecture
Bloc: FormBloc<T>
Lifecycle: Feature or Leased (per form instance)
State
class FormState<T> extends BlocState {
final Map<String, FieldState> fields;
final FormStatus status; // idle, validating, submitting, success, error
final T? formData;
final FormError? error;
final bool isDirty;
final bool isValid;
}
class FieldState {
final dynamic value;
final String? error;
final bool isTouched;
final bool isValidating;
}
Events
InitializeFormEvent- Set initial values and validatorsUpdateFieldEvent- Update single field valueValidateFieldEvent- Validate single fieldValidateFormEvent- Validate all fieldsSubmitFormEvent- Submit if validResetFormEvent- Reset to initial state
Rebuild Groups
form:field:{name}- Per-field rebuildsform:status- Overall form statusform:validation- Validation state changes
Open Questions
To be discussed