Tinyrack

Menubar

矢印キー移動と階層項目に対応した横並びのアプリケーションメニューを構成します。

矢印キー移動と階層項目に対応した横並びのアプリケーションメニューを構成します。

主なプロパティ

プロパティ説明
構成TRMenubar は順序付きの TRMenubarMenu を横方向に配置します。各項目は1つのトリガーとポップアップの子リストを持ちます。
キーボードMaterial のメニュー操作により、上位トリガーとネストしたサブメニューを方向キーで移動できます。Escape は開いているメニュー階層を閉じます。
利用可否1つの TRMenubarMenuenabled: false を指定すると、ほかのメニューを保ったまま、そのコマンドだけを無効にできます。
ネストレイヤーmenuChildrenTRMenuSubmenu を配置します。ネストした各ポップアップは、それぞれ枠線付きのレイヤー面を保ちます。

コマンドグループを示す semanticLabel をメニューバーに指定してください。メニューバーとアクティブなトリガーに枠線はなく、ポップアップレイヤーは枠線を保ちます。フォーカス項目は枠線の寸法を変えず、背景で強調します。

インストール

パッケージを追加し、公開ライブラリをインポートしてください。

flutter pub add tinyrack_ui
import 'package:tinyrack_ui/tinyrack_ui.dart';

プレイグラウンド

使用方法

import 'package:material_ui/material_ui.dart';
import 'package:tinyrack_ui/tinyrack_ui.dart';

TRMenubar(
  semanticLabel: 'アプリケーションメニュー',
  menus: [
    TRMenubarMenu(
      trigger: const Text('ファイル'),
      menuChildren: [
        TRMenuItem(onPressed: createRack, child: const Text('新規ラック')),
        TRMenuItem(onPressed: openRack, child: const Text('開く')),
      ],
    ),
  ],
)

API

TRMenubar のプロパティ

Prop型 / デフォルト用途
menusList<TRMenubarMenu> · required順序付きの上位メニューを定義します。
semanticLabelString? · null支援技術にアプリケーションコマンドグループの名前を伝えます。
uiSizeTRUiSize · TRUiSize.mdこのバー内のすべてのメニューが既定で解決するコントロールサイズを指定します。タイトルバーのような高密度なアプリケーションクロムには TRUiSize.sm を使います。

TRMenubarMenu のプロパティ

Prop型 / デフォルト用途
triggerWidget · required上位メニューのラベルを表示します。
menuChildrenList<Widget> · requiredポップアップに表示するコマンド、設定、区切り線、ネストしたサブメニューを指定します。
enabledbool · trueトリガーからメニューを開けるかを制御します。
controllerMenuController? · null親からこのメニューを開閉したり、状態を確認したりできます。
focusNodeFocusNode? · null親から上位トリガーのフォーカスを制御できます。
onOpen / onCloseVoidCallback? · nullこのメニューが開閉したときに通知します。
uiSizeTRUiSize? · nullこのトリガーに限り、バーが解決したサイズを上書きします。バー全体で1つのサイズを保つため、通常は設定しないでください。