searchable_dropdown_form_field 0.2.0
searchable_dropdown_form_field: ^0.2.0 copied to clipboard
A customizable, searchable Flutter dropdown with form validation and generic value support.
0.2.0 - 2026-08-23 #
Added #
- Added
CustomSearchableDropdown.async()as the concise constructor for single-request async search and infinite pagination. Both constructors share the same rendering path and customization API. - Optional infinite pagination through
asyncPageLoader; pages load near the end of the popup and an empty page ends pagination. - Separate first-page and next-page loading states with retry support.
- Custom asynchronous error UI through
asyncErrorBuilderand a reusableloadingWidget. - Popup list padding, separators, scroll physics, external scroll controller, width, and pagination trigger-distance options.
- Arrow-key navigation, Enter selection, and Escape dismissal.
- Screen-reader semantics for the field, search input, options, selection, and asynchronous errors.
semanticLabelandsearchSemanticLabeloverrides.- Keyboard-aware bottom sheets that resize and animate above system insets.
- Public API documentation for the new types and behavior.
- Regression tests for pagination, retry, list customization, keyboard input, and bottom-sheet keyboard insets.
- Updated runnable example with regular and infinitely paginated dropdowns.
Changed #
- Async usage now has the clearer
CustomSearchableDropdown.async()named constructor. - The async constructor requires exactly one of
asyncItemsLoaderorasyncPageLoader, preventing ambiguous configurations. - Regular and async constructors share the same form-field and popup rendering implementation, ensuring identical customization and validation behavior.
Fixed #
- Async selections retain and display their item labels when the local
itemslist is empty. - Stale async and paginated responses no longer replace newer search results.
- Short paginated results continue loading until the list becomes scrollable or the loader returns an empty page.
- Bottom-sheet content stays visible when the software keyboard opens.
Compatibility #
- Existing local
itemsand single-requestasyncItemsLoaderusage remains unchanged; all new behavior is opt-in.
0.1.1 - 2026-08-20 #
Fixed #
- Pointed the README's complete-example link to the pub.dev Example tab instead
of a dartdoc URL, because executable
example/lib/main.dartfiles do not receive standalone dartdoc pages.
0.1.0 - 2026-08-20 #
Initial release.
Added #
- Generic
DropdownItem<T>values and controlled selection. - Local, case-insensitive label search.
- Custom local matching through
searchMatcher. - Debounced asynchronous item loading with loading, error, retry, empty-state, and stale-response handling.
- Material dialog and modal bottom-sheet popup modes.
- Standard
FormField<T>validation, saving, and auto-validation. - Custom value comparison for model objects through
valueEquals. - Optional clear button, clear callback, and selected-item checkmark.
- Independent
InputDecorationsupport for the closed field and search input. - Text, title, icon, padding, shape, color, cursor, and keyboard customization.
- Custom field, popup-item, dialog-title, and empty-result builders.
- Disabled state and barrier-dismissal control.
- Async selected-item caching so its label remains visible after selection.
- Runnable Android example for local and asynchronous search.
- Widget tests covering search, selection, validation, disabled state, custom matching, clearing, model equality, bottom sheets, and async loading.