flutter_form_builder is a Map of values, and its field list is twelve widgets
Simple form maker for Flutter Framework
At a glance
- What is it?
- flutter_form_builder removes the boilerplate of wiring FormField, validators, change reactions and value collection into one keyed Map in Flutter. It is MIT licensed on pub.dev, the last push was on 2026-08-15 with release 11.0.0, and the project is actively asking for maintainers.
- Who is it for?
- Adopt flutter_form_builder if your Flutter forms are data collection screens where a fixed set of named fields must produce a Map you can post, since that is exactly the shape it is built for and twelve ready-made field widgets remove real duplication. Check the dynamic fields example before relying on behaviour for forms that change at runtime.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 69 days ago.
- What is it written in?
- Mainly Dart, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What it actually removes
The pitch is stated in one sentence: this package helps in creation of data collection forms in Flutter by removing the boilerplate needed to build a form, validate fields, react to changes and collect final user input. Four jobs, listed as four features on the repository.
The value collection in particular tends to be a long function that forgets a field every time someone adds one.
Here, each field carries a `name`, and the form produces a Map keyed by those names. That is the whole abstraction, and it is a good one for the target case: a data collection screen with a known set of inputs.
The package also ships the field widgets themselves, so you are not writing your own `FormBuilderField` for a checkbox. That is what the second paragraph of the README is about, and it is a meaningful part of the value: the input widgets are as much the product as the builder.
Installation is through pub.dev at `flutter_form_builder`. There is no install command in the README beyond that, and no code sample in the section shown, so the reference to follow is the package page and the `example/` directory, which carries a full platform set with android, ios, linux, macos, web and windows targets.
Twelve fields, and the parameter table they share
The supported inputs are listed explicitly, which is useful because you can check your form against the list before committing to the package.
- `FormBuilderCheckbox` for a single checkbox - `FormBuilderCheckboxGroup` for a list of checkboxes - `FormBuilderChoiceChip` for a chip behaving like a radio button - `FormBuilderDateRangePicker` for a range of dates - `FormBuilderDateTimePicker` for `Date`, `Time` and `DateTime` - `FormBuilderDropdown` for one value from a list - `FormBuilderFilterChip` for a chip behaving like a checkbox - `FormBuilderRadioGroup` for one value from a list of radio widgets - `FormBuilderRangeSlider` for a range of values - `FormBuilderSlider` for a numerical value - `FormBuilderSwitch` for on and off - `FormBuilderTextField` for a Material Design text input
Note the deliberate duplication. `ChoiceChip` and `RadioGroup` both select one value, and `FilterChip` and `CheckboxGroup` both select several. The chip forms are for the visual treatment where you want selectable pills, and the group forms are for the list layout. That is a real API surface decision rather than redundancy for its own sake.
The shared parameters table is where the design becomes concrete. Every field type supports the same attributes: `name` as a `String`, required, and it forms the key in the form value Map. `initialValue` of type `T`, defaulting to `null`. `enabled`, a `bool` defaulting to `true`, determining whether the field accepts user input. And `decoration`, an `InputDecoration` defaulting to `InputDecoration()`, which defines the border, labels, icons and styles used for the field.
So `enabled` is a first-class concept rather than something you fake by wrapping the widget in an `IgnorePointer`. For a form with a locked state where the address fields only become editable after a country is picked, that is the difference between one attribute and a wrapper widget.
The feature list points at cases, and two of them are warnings
The four features are stated generally: create a form with several types of inputs, get values from the form easily, apply validators to input fields, and react to form field changes and validations. The README then backs them with four recorded demonstrations rather than prose: a complete form with all fields, a sign up form, dynamic fields, and conditional fields.
That choice of examples is informative. A sign up form is the easy case for this package and the least interesting one. The other two are where the design either works or does not.
Dynamic fields means adding and removing inputs while the form is live. With a `name`-keyed Map, a removed field's key has to disappear from the output or your payload contains stale values, and that behaviour is not something the README describes in text. Watch the demonstration rather than assume.
Conditional fields means showing a field based on another field's value. That needs change reaction, which is one of the four stated features, and the same silence applies: the README does not say whether the change listener fires before or after validation, which matters if you are hiding a field while its validator is still attached.
The README documents the field list and shared parameters, but leaves some behavioural details to the linked demonstrations.
An ecosystem package asking for maintainers
The repository is organised under `flutter-form-builder-ecosystem` and the README opens the substantive content with a call for maintainers, stating they are looking for people to contribute to development and maintenance of the Flutter Form Builder Ecosystem, and that keeping the project alive and growing matters. The README points at its own Support section for the ways to help.
That is worth weighing as a factor rather than as a red flag. The release history includes 11.0.0 and two 10.3.0 patch releases.
The release history is steady and the current state is recent: 11.0.0 on 2026-08-15, 10.3.0+2 on 2026-02-14 and 10.3.0+1 on 2026-02-03. The last push was on 2026-08-15, the same day as the major release.
The repository layout is a normal Flutter package: `lib/`, `test/`, `example/`, `pubspec.yaml` with a checked-in `pubspec.lock`, and `analysis_options.yaml` for lint rules. `.fvmrc` pins a Flutter SDK version for the project itself, which is a small signal about how the maintainers control their toolchain. There is also a `test_fixes/` directory alongside `test/`, and CI evidence in the README through a GitHub Actions workflow badge, a Codecov badge and a CodeFactor grade badge.
Support channels are the README's Support section, contributions and questions, plus a donations mention. The licence is MIT, so embedding it in a commercial app is straightforward.
The comparison is with writing the fields by hand against Flutter's `Form`, and with other form packages in the ecosystem. The argument for this one is the combination of a keyed Map plus twelve ready-made widgets plus per-field `enabled`, which is a lot of small duplication removed. The argument against is that you are adopting an abstraction whose escape hatch is writing your own `FormBuilderField`, and whose behaviour documentation lives in videos rather than text.
Editorial conclusion
Adopt flutter_form_builder if your Flutter forms are data collection screens where a fixed set of named fields must produce a Map you can post, since that is exactly the shape it is built for and twelve ready-made field widgets remove real duplication. Check the dynamic fields example before relying on behaviour for forms that change at runtime. Verify first which version resolves, since 11.0.0 is a major bump from 10.3.0+2 and the README does not describe the breaking change, and check whether you are willing to depend on a package currently recruiting maintainers.
Frequently asked questions
How do I add flutter_form_builder to a Flutter project?
See the pub.dev package page for setup. The README does not include a command, so the package page at pub.dev/packages/flutter_form_builder is the reference, and the repository's `example/` directory has a full app.
What input fields does flutter_form_builder provide?
Twelve: Checkbox, CheckboxGroup, ChoiceChip, DateRangePicker, DateTimePicker, Dropdown, FilterChip, RadioGroup, RangeSlider, Slider, Switch and TextField, each prefixed with FormBuilder.
How are values collected in flutter_form_builder?
Each field takes a required `name` string, and that name forms the key in the form value Map. Shared parameters across all field types are `name`, `initialValue` defaulting to null, `enabled` defaulting to true, and `decoration` as an InputDecoration.
Does flutter_form_builder support dynamically added fields?
The README demonstrates dynamic fields and conditional fields as GIFs rather than describing them in text, so check those demonstrations for the behaviour on removing a field from a name-keyed Map before relying on it.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/flutter-form-builder-ecosystem-flutter-form-builder)Was this useful?