搜索插件、代码仓与 APP 分类

GitHub 代码仓iakdis/menu_bar

菜单栏

一个可自定义的应用程序菜单栏,适用于您的 Flutter 桌面应用程序,支持子菜单

菜单栏 项目封面
星标
16
复刻
6
最近推送(UTC)
2023年6月18日
项目状态
未归档

原始 README

以下为英文项目原文快照,最新内容请访问 GitHub。

A customizable application menu bar with submenus for your Flutter Desktop apps.

The menu bar is rendered inside your Flutter app (i.e. not as a native menu bar like in macOS). Native menu bars (at least for macOS) are since lately supported by Flutter. In the future, a native option in this package could get added.

Table of Contents

Preview

Preview GIF

Features

  • Application menu bar for Flutter Desktop
  • Nested submenus support
  • Dividers to structure submenus
  • Icon in submenu buttons (optional)
  • Keyboard shortcuts for button functions
  • Shortcut text in submenu buttons (optional)
  • Open menus and submenus on hover
  • Fully customizable
  • Easy to implement
  • Rich widget documentation

Usage

First, download and import the package:

import 'package:menu_bar/menu_bar.dart';

1. Integrate the menu bar

Wrap your application around the MenuBarWidget widget and add an empty list to barButtons so that you have assigned the 2 necessary fields. The child is your application under the menu bar:

MenuBarWidget(
    barButtons: [],
    child: Scaffold(...),
),

You should now see an empty menu bar above your application (see picture below). To add buttons with menus, proceed to step 2.

Screenshot of step 1

2. Create your menus

To add buttons with menus, use the following widget structure:

MenuBarWidget
    BarButton
        SubMenu
            MenuButton
            MenuButton
            ...
    BarButton
        SubMenu
            MenuButton
            MenuButton
            ...

In this example, we will add the following menu bar:

Screenshot of step 2
MenuBarWidget(
    // The buttons in this List are displayed as the buttons on the bar itself
    barButtons: [
        BarButton(
            text: const Text('File', style: TextStyle(color: Colors.white)),
            submenu: SubMenu(
                menuItems: [
                    MenuButton(
                        text: const Text('Save'),
                        onTap: () {},
                        icon: const Icon(Icons.save),
                        shortcutText: 'Ctrl+S',
                    ),
                    const MenuDivider(),
                    MenuButton(
                        text: const Text('Exit'),
                        onTap: () {},
                        icon: const Icon(Icons.exit_to_app),
                        shortcutText: 'Ctrl+Q',
                    ),
                ],
            ),
        ),
        BarButton(
            text: const Text('Help', style: TextStyle(color: Colors.white)),
            submenu: SubMenu(
                menuItems: [
                    MenuButton(
                      text: const Text('View License'),
                      onTap: () {},
                    ),
                    MenuButton(
                      text: const Text('About'),
                      onTap: () {},
                      icon: const Icon(Icons.info),
                    ),
                ],
            ),
        ),
    ],

    // Set the child, i.e. the application under the menu bar
    child: Scaffold(...),
),

3. Customize the menu bar

For customization options, see #Customization below or hover over the widgets for all the options in your preferred IDE when integrating the menu bar.

For a complete example, check out example.dart

Customization

Bar customization
Bar

See class MenuStyle in https://api.flutter.dev/flutter/material/MenuStyle-class.html.


Bar button customization
Bar button

See class ButtonStyle in https://api.flutter.dev/flutter/material/ButtonStyle-class.html.


Menu and submenu customization
Submenu

See class MenuStyle in https://api.flutter.dev/flutter/material/MenuStyle-class.html.


Menu and submenu buttons customization
Submenu button

See class ButtonStyle in https://api.flutter.dev/flutter/material/ButtonStyle-class.html.

Contact

If you want to report a bug, request a feature or improve something, feel free to file an issue in the GitHub repository.

iakdis GitHub avatar
GitHub 作者

iakdis ↗

语言Dart

分类

使用的依赖

依赖清单 3 项

  • flutter{"sdk":"flutter"}
  • lints开发依赖^2.0.0
  • test开发依赖^1.16.0

如何选择适合项目的代码仓?

先按使用场景筛选,再比较项目活跃情况,最后到原始仓库核对使用要求。

  1. 通过仓库名、作者或描述搜索,再按技术分类缩小范围。
  2. 结合星标、复刻与最近推送比较项目;星标反映社区关注,不代表质量保证。
  3. 使用前在 GitHub 核对 README、许可证与 Issues。

来源与维护

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗