flutter_speed_dial 4.4.0 flutter_speed_dial: ^4.4.0 copied to clipboard
Flutter plugin to implement a beautiful and dynamic Material Design Speed Dial with labels, animated icons, multi-directional children and much more.
Maintainers Wanted #
More info here
Flutter Speed Dial
Flutter package to render a Material Design Speed Dial.
Usage #
The SpeedDial widget is built to be placed in the Scaffold.floatingActionButton
argument, replacing the FloatingActionButton
widget.
You can set its position using Scaffold.floatingActionButtonLocation
argument.
It can also be used with Scaffold.bottomNavigationBar
and Snackbar
.
Null safety is available from version 3.0.5 ( It is also backward compatible, meaning you can use it with non null safe code too )
Labels
SpeedDial can take any Widget as label
SpeedDial will use Extended FloatingActionButton property if label is specified. It also have activeLabel
property by which you can specify the label which is shown when SpeedDial is open. It also comes with its labelTransitionBuilder which defaults to fade transition.
Also Every child's button have label
property which accepts String
which can be styled by using labelStyle
. If you want to specify a widget then you can use labelWidget.
If the label
parameter is not provided, then the label will be not rendered.
Types of child for SpeedDial (Ordered by their priority)
Animated Icon using animatedIcon
property
SpeedDial's AnimatedIcon has two specific parameters:
animatedIcon
takes anAnimatedIconData
widgetanimatedIconTheme
takesIconThemeData
Widget using child
& activeChild
property
SpeedDial's Widget has two specific parameters:
child
takes a widget and is the default placeholder if dial is not open.activeChild
takes a widget and is the child's Widget which is used when dial is open, not required.
IconData using icon
& activeIcon
property
SpeedDial's IconData has three specific parameters:
icon
takes aIconData
and is the default placeholder if dial is not open.activeIcon
takes aIconData
and is the child's IconData which is used when dial is open, not required.iconTheme
takes itsIconThemeData
which includes color and size.
The package will handle the animation by itself.
Handle spacing
There are various properties for SpeedDial by which you can adjust the spacing:
-
spacing
- This parameter handles the space b/w speed dial and its children. -
spaceBetweenChildren
- As the name suggests, this is used to adjust the space b/w every child element -
childPadding
- This will adjust the padding of children speed dial button, this will help you to control the size of the children button more effectively. -
childMargin
- This will help you to adjust the margin b/w children speed dial button and its label.
Close on WillPop
Although it doesn't magically closes when you press back button, but requires a easier setup to enable this functionality, here are the steps that you need to do to enable that:
- Add a value Notifier inside your widgets build context where your SpeedDial is placed like below.
ValueNotifier<bool> isDialOpen = ValueNotifier(false);
- Then you need to add a property to your SpeedDial known as openCloseDial like below.
openCloseDial: isDialOpen,
- Add a will Pop in your body or anywhere where you want and then simply add the following line in its onWillPop element.
WillPopScope(
onWillPop: () async {
if (isDialOpen.value) {
isDialOpen.value = false;
return false;
}
...other checks here
}
child: ...your child goes here
)
Example Usage
See Example Code for more info.
Issues & Feedback #
Please file an issue to send feedback or report a bug,
If you want to ask a question or suggest an idea then you can open an discussion.
Thank you!
Contributing #
Every pull request is welcome.