forms/forms library
Jet Forms Module
A comprehensive form management solution for Flutter applications using the Jet framework.
This module provides:
- State Management: AsyncFormValue pattern for form states
- Form Notifiers: JetFormNotifier for handling form logic
- Form Builder: JetFormBuilder for constructing forms
- Input Widgets: Pre-built form fields with validation
Basic Usage
// 1. Define your form notifier
class LoginFormNotifier extends JetFormNotifier<LoginRequest, LoginResponse> {
@override
LoginRequest decoder(Map<String, dynamic> json) {
return LoginRequest.fromJson(json);
}
@override
Future<LoginResponse> action(LoginRequest data) async {
return await apiService.login(data);
}
}
// 2. Create a provider
final loginFormProvider = JetFormProvider<LoginRequest, LoginResponse>(
(ref) => LoginFormNotifier(ref),
);
// 3. Build your form UI
JetFormBuilder<LoginRequest, LoginResponse>(
provider: loginFormProvider,
builder: (context, ref, form, state) {
return [
JetTextField(name: 'email'),
JetPasswordField(name: 'password'),
];
},
onSuccess: (response, request) {
// Handle success
},
)
Classes
-
AsyncFormData<
Request, Response> - Represents the data state of a form.
-
AsyncFormError<
Request, Response> - Represents the error state of a form.
-
AsyncFormIdle<
Request, Response> - Represents the idle state of a form (initial state, not yet submitted).
-
AsyncFormLoading<
Request, Response> - Represents the loading state of a form.
-
AsyncFormValue<
Request, Response> -
A class that represents the state of a form, inspired by
AsyncValue
from Riverpod. -
JetFormBuilder<
Request, Response> -
JetFormNotifier<
Request, Response> - JetPasswordField
- A customizable password field widget with built-in validation and visibility toggle.
- JetPhoneField
- A customizable phone number field widget with built-in validation.
- JetPinField
- A customizable PIN field widget with built-in validation using Pinput.
Typedefs
-
JetForm<
Request, Response> = JetFormNotifier< Request, Response> -
JetFormProvider<
Request, Response> = Provider< AsyncFormValue< Request, Response> >