Tinyrack

Tree Nav

ツリーのキーボードセマンティクスで、展開可能なグループと型付きの移動先を操作します。

選択中の移動先とネストされたレールを表示する、型付きの展開ナビゲーションを構築します。

主なプロパティ

プロパティ説明
選択状態ローカル選択には defaultValue を使い、親で管理する場合は valueonValueChange を指定した TRTreeNav.controlled を使います。
展開状態initiallyExpanded はグループの初期状態を設定し、TRTreeNavController は現在の展開集合を読み書きします。
ネストとレールネストの各階層にガイドレールとインデントが加わり、選択中の leaf を含むグループは強調表示されます。
状態の保持pageStorageId は最寄りの PageStorage から展開グループを復元します。選択状態の管理方法は変わりません。
コンテンツdescription は薄い補助行を追加します。leadingtrailing は行全体の両側で整列します。グループの trailing は chevron を置き換え、leaf は trailing コンテンツの後ろに disclosure indicator を任意で表示できます。
サイズuiSize を省略すると TRUiDensityScope に従います。すべてのサイズでコンテンツの上下に 8 logical px を使います。standard density は 1 行の leaf の最小高 40px を維持し、description がある場合はコンテンツに合わせて行が広がります。

順序付きのコレクションには TRTreeNav を使い、単独の移動先には TRNavigationRow を使います。Tab は読み順に従います。Enter と Space はフォーカス中の行を実行し、上下矢印はツリーの行間を移動し、展開・折りたたみの矢印はテキスト方向に従います。有効な行はポインター操作にホバーと押下中のサーフェスで応答します。無効な行はスキップされ、ポインターとキーボード入力を無視します。

インストール

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

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';

class DocsTree extends StatefulWidget {
  const DocsTree({super.key});

  @override
  State<DocsTree> createState() => _DocsTreeState();
}

class _DocsTreeState extends State<DocsTree> {
  String? currentPage = 'theming';

  @override
  Widget build(BuildContext context) => TRTreeNav<String>.controlled(
    value: currentPage,
    onValueChange: (value) => setState(() => currentPage = value),
    pageStorageId: 'docs-navigation',
    semanticLabel: 'Documentation',
    items: const [
      TRTreeNavGroup(
        value: 'guides',
        label: Text('GUIDES'),
        description: Text('Product documentation'),
        initiallyExpanded: true,
        children: [
          TRTreeNavLeaf(
            value: 'install',
            label: Text('Install'),
            description: Text('Add and configure the package'),
          ),
          TRTreeNavGroup(
            value: 'advanced',
            label: Text('ADVANCED'),
            initiallyExpanded: true,
            children: [
              TRTreeNavLeaf(value: 'plugins', label: Text('Plugins')),
              TRTreeNavLeaf(value: 'theming', label: Text('Theming')),
            ],
          ),
        ],
      ),
    ],
  );
}

制御されたドキュメントナビゲーション パーマリンク

コレクション外では単独の行を使い、route が変わっても PageStorage にネストされたツリーの展開状態を保持します。

API

TRNavigationRow のプロパティ

Prop型 / デフォルト用途
label, descriptionWidget, Widget? · label required主ラベルと、任意の薄い補助行を描画します。
leading, trailingWidget?, Widget? · nullラベルの前後にコンテンツを追加します。自動 disclosure indicator は trailing コンテンツの後ろに表示されます。
selected, enabledbool, bool · false, true選択中の強調表示と、行を実行できるかどうかを制御します。
onPressedVoidCallback? · null移動先を実行します。callback のない行は実行不可となり、indicator を表示しません。
uiSizeTRUiSize? · density defaultTRUiDensityScope が提供する行とコンテンツのサイズを上書きします。

TRTreeNav のプロパティ

Prop型 / デフォルト用途
itemsList<TRTreeNavItem<T>> · required順序付きのグループと移動先を定義します。
value, defaultValueT?, T? · null選択を制御するか、非制御選択の初期値を設定します。
onValueChangeValueChanged<T?>? · null有効な leaf が実行されたときに値を通知します。
controllerTRTreeNavController<T>? · null選択を監視し、展開グループの集合を管理します。
pageStorageId, semanticLabelObject?, String? · null展開状態を保持し、支援技術向けにナビゲーション領域へ名前を付けます。
uiSizeTRUiSize? · density defaultTRUiDensityScope が提供する行とコンテンツのサイズを上書きします。

TRTreeNavGroup のプロパティ

Prop型 / デフォルト用途
value, label, childrenT, Widget, List<TRTreeNavItem<T>> · requiredグループを識別し、trigger とネストされた node を定義します。
initiallyExpandedbool · falseグループを初期展開集合へ追加します。
keyKey? · null状態の復元と正確な操作のために、描画されたグループ行を識別します。
descriptionWidget? · nullグループの label の下に薄い補助行を追加します。
disabled, leading, trailingbool?, Widget?, Widget? · null展開を無効にするか行を装飾します。trailing は chevron を置き換えます。

TRTreeNavLeaf のプロパティ

Prop型 / デフォルト用途
value, labelT, Widget · required選択可能な移動先を識別して描画します。
descriptionWidget? · null移動先の label の下に薄い補助行を追加します。
keyKey? · nulllabel が重複しても、描画された移動先の行を識別します。
disabled, leading, trailingbool?, Widget?, Widget? · null選択を無効にするか、label の前後へコンテンツを追加します。
showDisclosureIndicatorbool · false有効な移動先の trailing コンテンツの後ろに、文字方向に対応する indicator を表示します。

TRTreeNavController API

Prop型 / デフォルト用途
value, expandedT?, Set<T>現在の選択と変更不可の展開集合を読み取ります。
select, togglevoid Function(T?), void Function(T)選択を変更するか、1 つのグループの展開状態を反転します。
setExpanded, replaceExpandedmethods1 つのグループを設定するか、展開集合全体を置き換えます。