selection_sheet 1.0.0
selection_sheet: ^1.0.0 copied to clipboard
A production-ready adaptive selection workflow for Flutter.
1.0.0 #
Breaking changes
SelectionSheetThemeDatastring fields (searchHintText,doneLabel,emptyLabel,errorLabel,retryLabel) are now nullable (String?). They default tonulland fall back toSelectionSheetLocalizationsat render time, enabling full localisation without touching theme data.
New features
- Adds
SelectionSheetLocalizationsabstract class andSelectionSheetLocalizationsScopeinherited widget for full i18n support. - Adds
SelectionSheetDefaultLocalizationswith English fallback strings. - Adds
barrierColortoSelectionSheetThemeData(and itscopyWith) so the modal scrim colour is fully themeable. - Adds
SelectionSheetController.isLoading— reflects whether an attached remote sheet is currently performing an initial or pagination load. SelectionSheetFormFieldandSelectionSheetMultiFormFieldnow accept all parameters that the modal helpers support:isItemEnabled,sectionLabelBuilder,stickySectionHeaders,loadingBuilder,emptyBuilder,errorBuilder,loadingMoreBuilder,loadMoreErrorBuilder,presentation,useRootNavigator, andisDismissible.
Bug fixes
- Fixes operator-precedence bug in
_showDragHandlethat caused the handle to appear even whenshowDragHandle: falsewas set while a customdragHandleBuilderwas provided. - Custom
loadingBuilder,emptyBuilder, anderrorBuilderwidgets are no longer unconditionally wrapped in aCenter; layout control is returned to the caller. Semanticsfor list items now useschecked(notselected) for multi-select rows, correctly mapping to a checkbox role on Android TalkBack._validateSourcelogic is rewritten with explicitbothNull || bothSetguards instead of the opaque XNOR expression.SelectionSheetMultiFormField.clear()no longer allocates an intermediateList.of(<Never>[]).
Internal
analysis_options.yamlnow enablesstrict-casts,strict-raw-types, and several high-value lint rules (prefer_final_fields,avoid_dynamic_calls,always_declare_return_types,require_trailing_commas, …).- Scroll-threshold (240 px) and dismiss-velocity (900 px/s) magic numbers are replaced with named constants.
- Boilerplate template comments removed from
pubspec.yaml.
0.6.1 #
- Prevents Android handle gestures from being processed by two drag owners, which could pop two routes and leave a black screen.
- Makes a downward list drag at scroll offset zero dismiss the sheet consistently on Android and iOS.
0.6.0 #
- Makes default and custom drag handles resize Material and Cupertino sheets.
- Adds drag-to-dismiss behavior for Cupertino sheet handles.
- Adds
enableDrag: falsefor a strict initial sheet height with independently scrolling content.
0.5.1 #
- Prevents sticky section headers from accumulating and obscuring the final section while scrolling.
- Adds per-workflow
showDragHandlecontrol and hides the handle by default for non-draggable embedded views. - Adds global and per-workflow
dragHandleBuildercustomization. - Updates the example with a full-height embedded workflow and custom handle.
0.5.0 #
- Adds stable item identity with
itemKeyBuilderfor selection matching and pagination deduplication. - Adds custom search inputs with global theme defaults and per-sheet overrides.
- Exposes
SelectionSheetView<T>for embedded single and multi-selection workflows. - Propagates item identity and custom search inputs through native form fields.
- Adds the optional
SelectionSheetViewItem<T>configuration object toshowSingleandshowMulti. - Refreshes the example app with interactive form, modal, remote grid, custom search, and embedded-view demonstrations.
0.4.0 #
- Adds cooperative cancellation tokens to every async page request.
- Cancels superseded search, refresh, pagination, and dismissed-sheet requests.
- Adds globally and locally configurable grid presentation.
- Adds native single and multi Flutter
FormFieldwidgets. - Keeps form-field hints optional to avoid duplicating an input label.
0.3.0 #
- Adds debounced remote search with stale-response protection.
- Adds page-number and cursor pagination through a shared request contract.
- Adds grouped sections with optional sticky and custom headers.
- Adds removable selected-item chips with typed custom builders.
- Adds global and per-sheet loading, empty, error, pagination loading, and pagination error builders.
- Adds retry handling for initial and pagination failures.
- Adds programmatic and pull-to-refresh support for remote sheets.
0.2.0 #
- Adds a 300 ms default debounce for local search.
- Adds global and per-sheet search debounce configuration.
- Allows debouncing to be disabled with
Duration.zero.
0.1.0 #
- Adds typed single and multi-selection sheets.
- Adds local search and disabled-item support.
- Adds draggable heights and keyboard avoidance.
- Adds adaptive Material and Cupertino presentation.
- Adds global theming and per-sheet item builder overrides.