keyed_form

Flutter

Bind pure-Dart keyed form state to Flutter controls, rebuilds, lists, and submission.

The Flutter package binds a KeyedFormController to widgets; it does not replace the shared schema or controller. Start with form scope and context, choose a field binding or text binding, then use selective rebuilds, virtualized lists, and submit/error reveal as needed. Schema definitions and pure-Dart state remain usable without Flutter.

dart
KeyedForm<LoginSchema>(
  controller: form,
  child: KeyedFormField.text<LoginSchema>(
    field: LoginFields.email,
    builder: (context, field, text) => TextField(
      controller: text,
      decoration: InputDecoration(errorText: field.errorText),
    ),
  ),
)

See installation and quickstart. For variant-specific controls, see rendering union fields.