pluto_menu_bar 1.0.0-nullsafety.0 copy "pluto_menu_bar: ^1.0.0-nullsafety.0" to clipboard
pluto_menu_bar: ^1.0.0-nullsafety.0 copied to clipboard

outdated

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),
    );

    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),
          ),
        ],
      ),
    );
  }
}
132
likes
0
pub points
92%
popularity

Publisher

verified publisherweblaze.dev

A menu bar for flutter. You can add as many submenus as you want, and you can change the default style.

Homepage
Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter

More

Packages that depend on pluto_menu_bar