ToggleGroup
値に基づいて単一または複数の押下トグルを管理します。
値に基づいて単一または複数の押下トグルを管理します。
主なプロパティ
| プロパティ | 説明 |
|---|---|
| 選択 | 既定では最大 1 つで、選択中の項目をもう一度押すと選択が解除されます。multiple を有効にすると各項目を個別に切り替えられます。 |
| 状態 | value を渡すと選択を制御でき、渡さない場合は defaultValue から始まります。どちらも List<String> で、既定は空です。 |
| 方向 | orientation は Flutter の Axis を受け取り、既定値は Axis.horizontal です。レイアウトの向きと方向キーの軸をまとめて決めます。 |
| キーボード | Tab でグループに入った後は、方向軸の矢印キーと Home・End で項目間を移動します。loopFocus が false でなければ端でフォーカスが循環し、無効な項目は飛ばされます。 |
| 利用可否 | グループの disabled はすべての項目を無効にし、個々の TRToggle を単独で無効にすることもできます。 |
グループが選択を保持し、子は公開ウィジェットの TRToggle なので、各項目には一意で変化しない value が必要です。単一のトグルと同じくグループもフォーム値を送信しないため、選択をフォームで送る必要がある場合は TRCheckboxGroup か TRRadioGroup を使ってください。
インストール
パッケージを追加し、公開ライブラリをインポートしてください。
flutter pub add tinyrack_uiimport '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 | 型 / デフォルト | 用途 |
|---|---|---|
children | List<TRToggle> · required | 項目を表示順かつフォーカス順に並べます。型が TRToggle なので、グループは各項目の value と disabled を読み取れます。 |
value | List<String>? · null | 選択中の値を制御します。値がある間、グループは自分で選択を変えません。 |
defaultValue | List<String> · const [] | 制御しないグループの初期選択を設定します。value を渡した場合は使われません。 |
onValueChange | ValueChanged<List<String>>? · null | 項目が変わった後の次のリストを通知します。変更を取り消す手段はありません。 |
multiple | bool · false | 値を 1 つに保つ代わりに、各項目を独立して切り替えられるようにします。 |
orientation | Axis · Axis.horizontal | この軸に沿って項目を並べ、フォーカスを移動する矢印キーを決めます。 |
loopFocus | bool · true | 最初と最後の有効な項目で矢印キーのフォーカスを循環させます。false にすると端で止まります。 |
disabled | bool · false | 個別に無効な項目に加えて、グループのすべての項目を無効にします。 |