SuperAPI AI 工具集

shadcn_ui-menubar

前端与建站

查看项目

更新于 10-16 04:00

技能介绍

用途

ShadMenubar 是 Shadcn UI 提供的菜单栏组件,用于构建桌面风格的常驻顶部菜单,例如 File、Edit、View 等典型菜单结构。适用于在界面顶部添加持续可见的菜单栏。

主要能力

  • 顶层菜单项:ShadMenubar 由多个 ShadMenubarItem 组成,每个 ShadMenubarItem 通过 child 提供标签(如 File、Edit、View),通过 items 提供该菜单下的条目列表。
  • 菜单条目:使用 ShadContextMenuItem 表示具体条目;ShadContextMenuItem.inset 可创建带内缩效果的条目。
  • 分隔线:可使用 ShadSeparator.horizontal,或使用 Divider(height: 8)。文档建议封装一个可复用分隔线,例如 ShadSeparator.horizontal(margin: const EdgeInsets.symmetric(vertical: 4), color: theme.colorScheme.muted)。
  • 子菜单:通过嵌套 ShadContextMenuItem 并为其设置 items 可实现子菜单;父项通常设置 trailing: Icon(LucideIcons.chevronRight) 作为展开指示。
  • 禁用条目:将 enabled 设为 false 可禁用某个菜单项。

使用方式

以 ShadMenubar 为根,items 传入多个 ShadMenubarItem。每个 ShadMenubarItem 的 items 数组中放入 ShadContextMenuItem,可混入 divider、禁用项以及带 items 的子菜单项。示例结构如下:

ShadMenubar(
  items: [
    ShadMenubarItem(
      items: [
        const ShadContextMenuItem(child: Text('New Tab')),
        const ShadContextMenuItem(child: Text('New Window')),
        const ShadContextMenuItem(
          enabled: false,
          child: Text('New Incognito Window'),
        ),
        divider,
        const ShadContextMenuItem(
          trailing: Icon(LucideIcons.chevronRight),
          items: [
            ShadContextMenuItem(child: Text('Email Link')),
            ShadContextMenuItem(child: Text('Messages')),
          ],
          child: Text('Share'),
        ),
        divider,
        const ShadContextMenuItem(child: Text('Print...')),
      ],
      child: const Text('File'),
    ),
    ShadMenubarItem(
      items: [
        const ShadContextMenuItem(child: Text('Undo')),
        const ShadContextMenuItem(child: Text('Redo')),
        divider,
        ShadContextMenuItem(
          trailing: const Icon(LucideIcons.chevronRight),
          items: [
            const ShadContextMenuItem(child: Text('Find...')),
            const ShadContextMenuItem(child: Text('Find Next')),
          ],
          child: const Text('Find'),
        ),
        divider,
        const ShadContextMenuItem(child: Text('Cut')),
        const ShadContextMenuItem(child: Text('Copy')),
        const ShadContextMenuItem(child: Text('Paste')),
      ],
      child: const Text('Edit'),
    ),
    ShadMenubarItem(
      items: [
        const ShadContextMenuItem.inset(child: Text('Reload')),
        const ShadContextMenuItem.inset(child: Text('Toggle Full Screen')),
      ],
      child: const Text('View'),
    ),
  ],
)

分隔线可这样创建:ShadSeparator.horizontal(margin: const EdgeInsets.symmetric(vertical: 4), color: theme.colorScheme.muted)。

适用场景

需要在应用中添加常驻顶部菜单栏(如 File、Edit、View 等)的界面场景;需要嵌套子菜单、分隔线、禁用项或内缩菜单项的桌面式菜单交互。

限制

暂未提供关于平台、依赖版本、收费或价格的明确信息。