A new Flutter package which helps developers in creating Expandable Menu.
With Dark Background | Transparent Background |
---|---|
To use this package :
- add the dependency to your pubspec.yaml file.
dependencies:
flutter:
sdk: flutter
flutter_expandable_menu: ^0.0.1
In order to use Expandable Menu Widget in your Application you will have to Put this widget inside the Stack Widget as below.
Stack(
children: <Widget>[
Center(
child: Text(
centerText,
style: TextStyle(color: Colors.black),
),
),
FlutterExpandableMenu(
menuList: floatMenuList,
callback: this,
backgroundColor: Colors.transparent,
menuBackgroundColor: Colors.black,
menuIcon: AnimatedIcons.menu_close,
menuAlignment: Alignment.center,
outerTransitionDuration: Duration(milliseconds: 300),
menusTransitionDuration: Duration(milliseconds: 500),
menusTransitionDelay: Duration(milliseconds: 200),
),
],
)
class _RoundMenuState extends State<RoundMenu>
with TickerProviderStateMixin
implements FloatingMenuCallback {
String centerText = "Home";
final List<FloatingMenuItem> floatMenuList = [
FloatingMenuItem(
id: 1, icon: Icons.favorite, backgroundColor: Colors.deepOrangeAccent),
FloatingMenuItem(id: 2, icon: Icons.map, backgroundColor: Colors.brown),
FloatingMenuItem(id: 3, icon: Icons.email, backgroundColor: Colors.indigo),
FloatingMenuItem(id: 4, icon: Icons.event, backgroundColor: Colors.pink),
FloatingMenuItem(id: 5, icon: Icons.print, backgroundColor: Colors.green),
FloatingMenuItem(
id: 6, icon: Icons.home, backgroundColor: Colors.deepPurple),
FloatingMenuItem(
id: 7, icon: Icons.location_on, backgroundColor: Colors.blueAccent),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Round Menu'),
leading: new IconButton(
icon: new Icon(Icons.arrow_back, color: Colors.black),
onPressed: () => Navigator.of(context).pop(),
),
),
body: Stack(
children: <Widget>[
Center(
child: Text(
centerText,
style: TextStyle(color: Colors.black),
),
),
FlutterExpandableMenu(
menuList: floatMenuList,
callback: this,
backgroundColor: Colors.transparent,
menuBackgroundColor: Colors.black,
menuIcon: AnimatedIcons.menu_close,
menuAlignment: Alignment.center,
outerTransitionDuration: Duration(milliseconds: 300),
menusTransitionDuration: Duration(milliseconds: 500),
menusTransitionDelay: Duration(milliseconds: 200),
),
],
),
);
}
@override
void onMenuClick(FloatingMenuItem floatingMenuItem) {
if (floatingMenuItem != null) {
print("onMenuClicked : " + floatingMenuItem.id.toString());
switch (floatingMenuItem.id) {
case 1:
{
centerText = "Favorite";
}
break;
case 2:
{
centerText = "Map";
}
break;
case 3:
{
centerText = "Email";
}
break;
case 4:
{
centerText = "Event";
}
break;
case 5:
{
centerText = "Print";
}
break;
case 6:
{
centerText = "Home";
}
break;
case 7:
{
centerText = "Location";
}
break;
}
setState(() {});
}
}
}
If you found this package helpful or you learned something from the source code and want to thank me, consider buying me a cup of ☕
Copyright 2019 Uttam Panchasara
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.