contextualactionbar 1.0.1
contextualactionbar: ^1.0.1 copied to clipboard
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
Flutter contextual action bar(CAB) #
A reliable contextual action bar workaround for flutter.

CAB & Flutter #
CAB is a top app bar that replace the app 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 #
ContextualActionScaffoldContextualAppBarContextualActionContextualActionWidget
ContextualActionScaffold<?> #
The ContextualActionScaffold<?> is similar to the normal material Scaffold except that it also takes
a required contextualAppBar.
ContextualActionScaffold<?>(
appBar: AppBar(),
contextualAppBar: ContextualAppBar(),
body: Body(),
)
ContextualAppBar<?> #
The ContextualAppBar<?> is similar to the normal material Appbar but takes a counterBuilder instead of title and also a contextualActions instead of `actions.
ContextualAppBar(
counterBuilder: (int itemsCount){
return Text("$itemsCount Selected");
},
contextualActions: <ContextualAction>[],
)
ContextualAction<?> #
The ContextualAction<?> allows you to take actions on the selected items, with the help of itemsHandler callback.
ContextualAction(
itemsHandler: (List<?> items) {
items.forEach((item) {
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("$item saved"),
));
});
},
child: Icon(Icons.save),
),
ContextualActionWidget<?> #
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.
ContextualActionWidget(
data: ?,
child: ChildWidget(),
)
Note: It is important that the child widget does not handle onLongPress.
Study complete examples at example page
Other Packages authored by me #
License #
This package is licensed under the MIT license. See LICENSE for details.