Skip to content

Forms

Reliable, typed form state with validation, helpers, and integrations.

Why

  • Predictable field states and validation
  • Ergonomic reads and updates
  • Easy adapters for state management

TL;DR

  • Define field states
  • Use helpers to read and update
  • Submit with a controller

Steps

1) Create field states with rules 2) Group in BondFormState 3) Submit via controller

Example

final email = TextFieldState('', rules: [Rules.required(), Rules.email()]);
final state = BondFormState(fields: {'email': email});
controller.updateText('email', 'user@example.com');

Deep Dive

  • Validation rules: required, email, min/max length, numeric, integer, date before/after, inList, same, size, url, between, boolean, range selected
  • Riverpod controllers and family variants
  • Request body generation via BodyConvertible

Pitfalls

  • Heavy controllers doing network work directly
  • Missing rules on critical fields

Next Steps

  • See Authentication for form recipes
  • See Data and Networking for submissions