Radio Group
ラジオ間の相互排他的な選択を管理します。
ラジオ間の相互排他的な選択を管理します。
主なプロパティ
| プロパティ | 説明 |
|---|---|
| 状態管理 | グループが選択を管理する場合は defaultValue、controlled 状態では value と onValueChange を組み合わせます。どちらも String? で、両方 null のときは何も選択されていない状態から始まります。 |
| ラベル | グループ自体はラベルを描画しません。TRField で包んで選択項目に名前を付け、その下にエラーメッセージを表示してください。 |
| 利用可否 | グループの disabled はすべての選択肢を操作不可にし、名前付きグループを TRFormValues から除外します。グループの readOnly は選択値とフォーカスを保ったまま変更を拒否します。 |
| フォーム | name を設定すると選択済み文字列を最も近い TRForm に登録し、save() がその値を返します。グループは FormField ではないため TRForm.reset() では値が戻りません。初期値は自分の状態から復元してください。 |
| キーボード | Tab でグループに入ると、選択中の選択肢にフォーカスが移ります。その後は両軸の矢印キーと Home・End がフォーカスと選択を一緒に移動させ、無効な選択肢を飛ばし、端で循環します。readOnly のグループは値を変えずにフォーカスだけを移します。 |
グループが選択値を保持し、子は公開ウィジェットの TRRadio なので、各選択肢には一意な value が必要です。Web コンポーネントと違い required プロパティ、外部フォームとの関連付け、組み込みの検証はありません。TRField で包んで表示ラベルを付け、エラーメッセージは自分の状態から組み立ててください。
インストール
パッケージを追加し、公開ライブラリをインポートしてください。
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 DeploymentRack extends StatefulWidget {
const DeploymentRack({super.key});
@override
State<DeploymentRack> createState() => _DeploymentRackState();
}
class _DeploymentRackState extends State<DeploymentRack> {
String rack = 'alpha';
@override
Widget build(BuildContext context) {
return TRField(
label: 'デプロイ先ラック',
control: TRRadioGroup(
name: 'rack',
value: rack,
onValueChange: (next) => setState(() => rack = next),
children: const [
TRRadio(
value: 'alpha',
label: TRText('ラック alpha', variant: TRTextVariant.bodySm),
),
TRRadio(
value: 'beta',
label: TRText('ラック beta', variant: TRTextVariant.bodySm),
),
],
),
);
}
}例
編集可能、読み取り専用、無効のグループ パーマリンク
読み取り専用のグループは値とキーボードフォーカスを保ち、無効なグループは両方を止めて TRFormValues から外れます。
値を 1 つ必須にする パーマリンク
グループに required プロパティはないため、値を制御して独自のメッセージを TRField.errorText に渡します。
フォームから値を取得する パーマリンク
name を設定すると選択済み文字列が最も近い TRForm に登録され、save() で取得できます。
API
TRRadioGroup のプロパティ
| Prop | 型 / デフォルト | 用途 |
|---|---|---|
children | List<TRRadio> · required | 選択肢を表示順かつフォーカス順に並べます。型が TRRadio なので、グループは各選択肢の value と disabled を読み取れます。 |
value | String? · null | 選択中の選択肢を制御します。値がある間、グループは自分で選択を変えません。 |
defaultValue | String? · null | 制御しないグループの初期選択を設定します。一度だけ読まれるため後から変更しても選択は移らず、value を渡した場合は使われません。 |
onValueChange | ValueChanged<String>? · null | タップや矢印キーの後の次の選択値を通知します。変更を取り消す手段はありません。 |
disabled | bool · false | すべての選択肢を無効にし、名前付きグループを TRFormValues から除外します。 |
readOnly | bool · false | 選択値とキーボードフォーカスを保ったまま、すべての変更を拒否します。 |
name | String? · null | 選択値を最も近い TRForm に登録します。 |