A Contextual Action Bar(CAB) workaround for flutter. CAB is a top app bar that replace the app app bar and provide contextual actions to selected items
Package selection guidance compiled from public package information, community data, and project usage.
The contextualactionbar package provides a workaround for implementing a Contextual Action Bar (CAB) in Flutter, enabling a dynamic top app bar that replaces the standard app bar to display context-specific actions when items are selected. Designed for use across multiple platforms including Android, iOS, Web, macOS, Windows, and Linux, it enhances user interaction by offering targeted controls during selection modes. The package integrates seamlessly with existing Flutter apps and supports custom styling and behavior. It is particularly useful in list or grid interfaces where users need to perform batch operations.
Use cases
Batch item selection in lists
Context-sensitive actions in grids
Enhanced user interaction in mobile apps
Customizable action overlays
Cross-platform implementation
Selection mode UI enhancements
Key features
Dynamic replacement of app bar
Support for multiple platforms
Customizable action buttons
Integration with selection modes
Lightweight and easy to implement
Responsive design for all devices
Suitable for
Developers building interactive list interfaces
Apps requiring batch operations
Cross-platform mobile applications
UIs with selection-based workflows
Teams seeking platform-agnostic CAB solutions
Flutter projects needing contextual action support
Considerations
Requires manual handling of selection state
Limited built-in animations
May need additional styling for consistency
Depends on proper integration with scrollables
Not suitable for simple static UIs
Best used with state management patterns
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
Flutter contextual action bar(CAB)
CAB & Flutter
CAB is a top app bar that replace the application app bar to provide contextual actions to selected items. Check the material implementation and requirement here
Flutter does not natively support CAB yet. see issue
Until CAB is natively supported, this package should provide you with an elegant way to implement the contextual action bar in flutter.
How it works
ContextualScaffold
ContextualAppBar
ContextualAction
ContextualActionWidget
ContextualScaffold<?>
The ContextualScaffold<?> is similar to the normal material Scaffold except that it also takes
a required contextualAppBar.
You can provide multiple ContextualScaffold as needed
ContextualAppBar<?>
The ContextualAppBar<?> is similar to the normal material Appbar but takes a counterBuilder instead of title and also a contextualActions instead of actions.
You can use the ContextualActionWidget anywhere in the ContextualActionScaffold body to notify ContextualActionScaffold that an item have been selected in order to show the ContextualAppBar.
Note: It is important that the child widget does not handle onLongPress.
A closer look at ContextualActionWidget<?>
The ContextualActionWidget<?> takes other optional parameters like
selectedColor
selectedWidget
unselectedWidget
The selectedColor is the color of the background for the selected item, it defaults to the splash color, if not provided. The selectedColor works well with ListTile.
selectedWidget and unselectedWidget are stacked on top of the provided child widget. By default, they are positioned at the center of the provided child widget.
Since They are stacked, you can use Row, Align, Positioned Widget or any other combination of widgets to position them where desired.
The selectedWidget is shown when the ActionMode is enabled and the item is selected, while the unselectedWidget is shown when ActionMode is enabled and the item is not selected. See example(status_saver) image below with both the selectedWidget and unselectedWidget aligned to the top-right corner.
ActionMode
This contextual action bar workaround does not support zero item in the ActionMode.
Use the ActionMode.addItem<?> to add an item to the selected items. If this is the first selection, the ActionMode is will be enabled.
Use the ActionMode.addItems<?> to add a list of items.
Use the ActionMode.disable<?> to disable and deselect all selected items.
Use the ActionMode.enabledStream<?> to emit true or false depending on if the Action mode is enabled or disabled respectively.
Note: In most cases, you won't need to use ActionMode.disable<?> because the package already do that for you where needed.
Study complete examples at example page.
If you like the project, don't forget to star ⭐️