Tinyrack

Checkbox Group

複数のチェックボックス値を controlled・uncontrolled・フォーム連携の状態としてまとめて管理します。

個別に切り替えられる複数の値を、controlled・uncontrolled・名前付きフォームフィールドとしてまとめて管理します。

主なプロパティ

プロパティ説明
状態管理グループが選択を管理する場合は defaultValue、controlled 状態では valueonValueChange を組み合わせます。
利用可否グループの disabled はすべての子を操作不可にします。子の readOnly は値を表示したまま変更を防ぎます。
フォームname を設定すると選択済み文字列リストを最も近い TRForm に登録します。disabled グループは除外されます。
単一選択1 つだけ選択する場合は TRRadioGroup を使います。

TRCheckbox に固有の value と表示ラベルを指定してください。MergeSemantics でチェックボックスと隣接ラベルを 1 つのセマンティック単位にまとめます。

インストール

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

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

TRCheckboxGroup(
  defaultValue: const ['metrics'],
  onValueChange: setValues,
  children: const [
    MergeSemantics(
      child: Row(
        mainAxisSize: MainAxisSize.min,
        spacing: TRSpacing.small,
        children: [
          TRCheckbox(value: 'metrics'),
          TRText('Metrics', variant: TRTextVariant.bodySm),
        ],
      ),
    ),
    MergeSemantics(
      child: Row(
        mainAxisSize: MainAxisSize.min,
        spacing: TRSpacing.small,
        children: [
          TRCheckbox(value: 'alerts'),
          TRText('Alerts', variant: TRTextVariant.bodySm),
        ],
      ),
    ),
  ],
)

オプション一覧 パーマリンク

各チェックボックスに表示ラベルを付け、グループが初期選択を管理する場合は defaultValue を使います。

編集可能、読み取り専用、無効 パーマリンク

値を表示したままにする場合は個々のチェックボックスを readOnly にし、すべての子を操作不可にする場合はグループを無効にします。

1つまたは2つを選ぶ パーマリンク

最小数と最大数のルールがある場合は、値のリストを制御します。

すべて選択と一部選択 パーマリンク

制御された値のリストから別のチェックボックスを更新し、すべて選択と一部選択の状態を提供します。

名前付きフォーム値を取得 パーマリンク

グループに name を設定すると、TRFormState.save() に選択済みの文字列リストが含まれます。

API

選択と操作

Prop型 / デフォルト用途
value, defaultValueList<String>?, List<String> = const []選択値を制御または初期化します。
onValueChangeValueChanged<List<String>>?次の選択済み文字列リストを通知します。
childrenList<Widget>null ではない値を持つ子孫の TRCheckbox だけが選択に参加します。
disabledbool = falseすべての子を無効にし、名前付きグループを TRFormValues から除外します。
nameString?選択済みリストを最も近い TRForm に登録します。