API ReferenceInput & Forms
FormField
Validators, submit handlers, restoration binding, and generic fields.
FormField
| Type | Purpose |
|---|---|
FormField | Validator, autovalidate, submit, restoration binding on a controller |
GenericFormField<T> | Same contract for arbitrary values with initial_value |
RawAutocomplete<T> | Option list with display-string mapping |
AutofillGroup | Autofill scope marker |
FormFieldState<T> | value, error_text, did_change, reset |
use incular::prelude::*;
fn main() {
let controller = TextEditingController::with_text("ab");
let form = Form::new();
let field = form
.register(controller)
.validator(|text| {
if text.len() < 3 {
Some("Too short".to_string())
} else {
None
}
})
.autovalidate(AutovalidateMode::OnUserInteraction);
let ok = field.validate();
let error = field.error().unwrap_or_default();
let app = Application::new(move |_cx| {
Container::builder()
.padding(EdgeInsets::all(24.0))
.alignment(Alignment::CENTER)
.child(Text::new(format!("valid: {ok}, error: {error}")))
.build()
.into()
})
.expect("valid application");
incular::run(app).expect("run application");
}Drop unregisters the field from its Form.
GenericFormField
GenericFormField::<T>::new(|value: Option<&T>| widget) with
initial_value, validator, on_saved, autovalidate_mode, enabled,
and restoration_id — the same contract for non-text values.
Autocomplete and groups
RawAutocomplete::new(options, display_string) with
AutocompleteHighlightedOption, AutofillGroup, and UndoHistory
(max_entries, 0 disables recording). FormFieldState<T>: value() /
error_text() / has_error() / is_valid() / did_change(v) /
reset(initial).
Related: Form,
Input Formatters,
UndoHistory.