Tinyrack

Radio Group

ラジオ間の相互排他的な選択を管理します。

ラジオ間の相互排他的な選択を管理します。

主なプロパティ

プロパティ説明
状態管理グループが選択を管理する場合は defaultValue、controlled 状態では valueonValueChange を組み合わせます。どちらも 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_ui
import '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型 / デフォルト用途
childrenList<TRRadio> · required選択肢を表示順かつフォーカス順に並べます。型が TRRadio なので、グループは各選択肢の valuedisabled を読み取れます。
valueString? · null選択中の選択肢を制御します。値がある間、グループは自分で選択を変えません。
defaultValueString? · null制御しないグループの初期選択を設定します。一度だけ読まれるため後から変更しても選択は移らず、value を渡した場合は使われません。
onValueChangeValueChanged<String>? · nullタップや矢印キーの後の次の選択値を通知します。変更を取り消す手段はありません。
disabledbool · falseすべての選択肢を無効にし、名前付きグループを TRFormValues から除外します。
readOnlybool · false選択値とキーボードフォーカスを保ったまま、すべての変更を拒否します。
nameString? · null選択値を最も近い TRForm に登録します。