pluto_menu_bar 1.0.0-nullsafety.0 pluto_menu_bar: ^1.0.0-nullsafety.0 copied to clipboard
A menu bar for flutter. You can add as many submenus as you want, and you can change the default style.
import 'package:flutter/material.dart';
import 'package:pluto_menu_bar/pluto_menu_bar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final _scaffoldKey = GlobalKey();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
key: _scaffoldKey,
appBar: AppBar(
title: Text('PlutoMenuBar'),
),
body: PlutoMenuBarDemo(scaffoldKey: _scaffoldKey),
),
);
}
}
class PlutoMenuBarDemo extends StatelessWidget {
final scaffoldKey;
PlutoMenuBarDemo({
this.scaffoldKey,
});
void message(context, String text) {
scaffoldKey.currentState.hideCurrentSnackBar();
final snackBar = SnackBar(
content: Text(text),
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
List<MenuItem> getMenus(BuildContext context) {
return [
MenuItem(
title: 'Menu 1',
icon: Icons.home,
children: [
MenuItem(
title: 'Menu 1-1',
icon: Icons.group,
onTap: () => message(context, 'Menu 1-1 tap'),
children: [
MenuItem(
title: 'Menu 1-1-1',
onTap: () => message(context, 'Menu 1-1-1 tap'),
children: [
MenuItem(
title: 'Menu 1-1-1-1',
onTap: () => message(context, 'Menu 1-1-1-1 tap'),
),
MenuItem(
title: 'Menu 1-1-1-2',
onTap: () => message(context, 'Menu 1-1-1-2 tap'),
),
],
),
MenuItem(
title: 'Menu 1-1-2',
onTap: () => message(context, 'Menu 1-1-2 tap'),
),
],
),
MenuItem(
title: 'Menu 1-2',
onTap: () => message(context, 'Menu 1-2 tap'),
),
],
),
MenuItem(
title: 'Menu 2',
icon: Icons.add_circle,
children: [
MenuItem(
title: 'Menu 2-1',
onTap: () => message(context, 'Menu 2-1 tap'),
),
],
),
MenuItem(
title: 'Menu 3',
icon: Icons.apps_outlined,
onTap: () => message(context, 'Menu 3 tap'),
),
MenuItem(
title: 'Menu 4',
onTap: () => message(context, 'Menu 4 tap'),
),
MenuItem(
title: 'Menu 5',
onTap: () => message(context, 'Menu 5 tap'),
),
MenuItem(
title: 'Menu 6',
children: [
MenuItem(
title: 'Menu 6-1',
onTap: () => message(context, 'Menu 6-1 tap'),
children: [
MenuItem(
title: 'Menu 6-1-1',
onTap: () => message(context, 'Menu 6-1-1 tap'),
children: [
MenuItem(
title: 'Menu 6-1-1-1',
onTap: () => message(context, 'Menu 6-1-1-1 tap'),
),
MenuItem(
title: 'Menu 6-1-1-2',
onTap: () => message(context, 'Menu 6-1-1-2 tap'),
),
],
),
MenuItem(
title: 'Menu 6-1-2',
onTap: () => message(context, 'Menu 6-1-2 tap'),
),
],
),
MenuItem(
title: 'Menu 6-2',
onTap: () => message(context, 'Menu 6-2 tap'),
),
],
),
];
}
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: [
SizedBox(
height: 30,
),
PlutoMenuBar(
menus: getMenus(context),
),
SizedBox(
height: 30,
),
PlutoMenuBar(
backgroundColor: Colors.deepOrange,
gradient: false,
textStyle: TextStyle(color: Colors.white),
moreIconColor: Colors.white,
menus: getMenus(context),
),
SizedBox(
height: 30,
),
PlutoMenuBar(
backgroundColor: Colors.orange,
textStyle: TextStyle(color: Colors.white, fontSize: 18),
height: 55,
moreIconColor: Colors.white,
menus: getMenus(context),
),
SizedBox(
height: 30,
),
PlutoMenuBar(
backgroundColor: Colors.black,
gradient: false,
textStyle: TextStyle(color: Colors.white, fontSize: 20),
height: 65,
menuIconColor: Colors.white,
menuIconSize: 26,
moreIconColor: Colors.white,
menus: getMenus(context),
),
],
),
);
}
}