pluto_menu_bar 0.1.1
pluto_menu_bar: ^0.1.1 copied to clipboard
A menu bar for flutter. You can add as many submenus as you want, and you can change the default style.
example/lib/main.dart
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),
);
Scaffold.of(context).showSnackBar(snackBar);
}
List<MenuItem> getMenus(BuildContext context) {
return [
MenuItem(
title: 'Menu 1',
children: [
MenuItem(
title: 'Menu 1-1',
onTab: () => message(context, 'Menu 1-1 tap'),
children: [
MenuItem(
title: 'Menu 1-1-1',
onTab: () => message(context, 'Menu 1-1-1 tap'),
children: [
MenuItem(
title: 'Menu 1-1-1-1',
onTab: () => message(context, 'Menu 1-1-1-1 tap'),
),
MenuItem(
title: 'Menu 1-1-1-2',
onTab: () => message(context, 'Menu 1-1-1-2 tap'),
),
],
),
MenuItem(
title: 'Menu 1-1-2',
onTab: () => message(context, 'Menu 1-1-2 tap'),
),
],
),
MenuItem(
title: 'Menu 1-2',
onTab: () => message(context, 'Menu 1-2 tap'),
),
],
),
MenuItem(
title: 'Menu 2',
children: [
MenuItem(
title: 'Menu 2-1',
onTab: () => message(context, 'Menu 2-1 tap'),
),
],
),
MenuItem(
title: 'Menu 3',
onTab: () => message(context, 'Menu 3 tap'),
),
MenuItem(
title: 'Menu 4',
onTab: () => message(context, 'Menu 4 tap'),
),
MenuItem(
title: 'Menu 5',
onTab: () => message(context, 'Menu 5 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: 20),
height: 55,
moreIconColor: Colors.white,
menus: getMenus(context),
),
SizedBox(
height: 30,
),
PlutoMenuBar(
backgroundColor: Colors.black,
gradient: false,
textStyle: TextStyle(color: Colors.white, fontSize: 25),
height: 65,
moreIconColor: Colors.white,
menus: getMenus(context),
),
],
),
);
}
}