Tinyrack

ToggleGroup

値に基づいて単一または複数の押下トグルを管理します。

値に基づいて単一または複数の押下トグルを管理します。

主なプロパティ

プロパティ説明
選択既定では最大 1 つで、選択中の項目をもう一度押すと選択が解除されます。multiple を有効にすると各項目を個別に切り替えられます。
状態value を渡すと選択を制御でき、渡さない場合は defaultValue から始まります。どちらも List<String> で、既定は空です。
方向orientation は Flutter の Axis を受け取り、既定値は Axis.horizontal です。レイアウトの向きと方向キーの軸をまとめて決めます。
キーボードTab でグループに入った後は、方向軸の矢印キーと Home・End で項目間を移動します。loopFocusfalse でなければ端でフォーカスが循環し、無効な項目は飛ばされます。
利用可否グループの disabled はすべての項目を無効にし、個々の TRToggle を単独で無効にすることもできます。

グループが選択を保持し、子は公開ウィジェットの TRToggle なので、各項目には一意で変化しない value が必要です。単一のトグルと同じくグループもフォーム値を送信しないため、選択をフォームで送る必要がある場合は TRCheckboxGroupTRRadioGroup を使ってください。

インストール

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

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 AlignmentBar extends StatefulWidget {
  const AlignmentBar({super.key});

  @override
  State<AlignmentBar> createState() => _AlignmentBarState();
}

class _AlignmentBarState extends State<AlignmentBar> {
  List<String> alignment = const ['start'];

  @override
  Widget build(BuildContext context) {
    return TRToggleGroup(
      value: alignment,
      onValueChange: (next) => setState(() => alignment = next),
      children: const [
        TRToggle(value: 'start', child: Text('先頭')),
        TRToggle(value: 'center', child: Text('中央')),
        TRToggle(value: 'end', child: Text('末尾')),
      ],
    );
  }
}

単一選択 パーマリンク

既定では選択できる値は 1 つだけで、選択中の項目をもう一度押すと選択が外れます。onValueChange は次のリストを渡します。

複数選択 パーマリンク

multiple を有効にすると各項目が独立して切り替わり、value に複数の値を同時に保持できます。

縦方向のフォーカスと無効化の範囲 パーマリンク

縦方向のグループでは上下キーでフォーカスが移動します。loopFocus: false は端でフォーカスを止め、disabled はすべての項目を無効にし、項目ごとに個別に無効化することもできます。

API

TRToggleGroup のプロパティ

Prop型 / デフォルト用途
childrenList<TRToggle> · required項目を表示順かつフォーカス順に並べます。型が TRToggle なので、グループは各項目の valuedisabled を読み取れます。
valueList<String>? · null選択中の値を制御します。値がある間、グループは自分で選択を変えません。
defaultValueList<String> · const []制御しないグループの初期選択を設定します。value を渡した場合は使われません。
onValueChangeValueChanged<List<String>>? · null項目が変わった後の次のリストを通知します。変更を取り消す手段はありません。
multiplebool · false値を 1 つに保つ代わりに、各項目を独立して切り替えられるようにします。
orientationAxis · Axis.horizontalこの軸に沿って項目を並べ、フォーカスを移動する矢印キーを決めます。
loopFocusbool · true最初と最後の有効な項目で矢印キーのフォーカスを循環させます。false にすると端で止まります。
disabledbool · false個別に無効な項目に加えて、グループのすべての項目を無効にします。