Switch
即時に反映されるオン/オフ設定を切り替えます。
即時に反映されるオン/オフ設定を切り替えます。
主なプロパティ
| プロパティ | 説明 |
|---|---|
| 状態 | checked を渡すと値を制御でき、渡さない場合は false の defaultChecked から自身で管理します。どちらでも onCheckedChange が次の値を通知します。 |
| 利用可否 | readOnly は変更を拒みつつ、フォーカスとキーボード操作は残します。disabled は変更を拒み、支援技術には利用できない状態として伝えます。どちらも現在の値は表示したままです。 |
| ラベル | スイッチ自体はラベルを描画しません。隣に見えるテキストを置き、同じ文言を semanticLabel に渡さないとアクセシブルな名前が空になります。フォーカスされた編集可能なスイッチは Space キーを離した時点で切り替わります。 |
| 検証 | invalid は危険を示す枠線を描くだけです。エラーテキストの領域もフォームフィールドのラッパーもないため、メッセージの描画と invalid の解除は自分で行ってください。 |
切り替えた瞬間に設定が反映される場面ではスイッチを使ってください。値をまとめてフォームと一緒に送信する場合はチェックボックスを使ってください。TRSwitch は name や value、required を受け取らないため、送信する値は自分で保持している状態から読み取る必要があります。サイズのバリエーションもありません。
インストール
パッケージを追加し、公開ライブラリをインポートしてください。
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 BackupSetting extends StatefulWidget {
const BackupSetting({super.key});
@override
State<BackupSetting> createState() => _BackupSettingState();
}
class _BackupSettingState extends State<BackupSetting> {
bool enabled = false;
@override
Widget build(BuildContext context) {
return Row(
mainAxisSize: MainAxisSize.min,
spacing: TRSpacing.small,
children: [
TRSwitch(
checked: enabled,
onCheckedChange: (next) => setState(() => enabled = next),
semanticLabel: '自動バックアップ',
),
const TRText('自動バックアップ'),
],
);
}
}例
制御付きの設定 パーマリンク
値を `checked` で保持し、`onCheckedChange` で更新すると、設定をほかの UI にも反映できます。スイッチには見えるテキストを添え、同じ文言を `semanticLabel` にも渡してください。
編集可能・読み取り専用・無効 パーマリンク
`readOnly` はフォーカスとキーボード操作を残したまま変更だけを拒みます。`disabled` も変更を拒み、支援技術には利用できない状態として伝えます。どちらも現在の値は表示したままです。
必須の設定と復帰 パーマリンク
`invalid` は危険を示す枠線を描くだけです。`TRSwitch` にはエラーテキストの領域もフォーム検証もないため、メッセージは自分で描画し、設定が有効になったら両方とも解除してください。
API
状態と利用可否
| Prop | 型 / デフォルト | 用途 |
|---|---|---|
checked | bool? · null | 値を制御します。値がある間、ウィジェットは自分で状態を変えません。 |
defaultChecked | bool · false | 制御しないスイッチの初期値を設定します。checked を渡した場合は使われません。 |
onCheckedChange | ValueChanged<bool>? · null | タップや Space の後の次の値を通知します。変更を取り消す手段はありません。 |
disabled | bool · false | ポインターとキーボードの操作を無効にし、支援技術に無効状態として伝えます。 |
readOnly | bool · false | 変更を拒みますが、フォーカスは受け取れ、支援技術には通常の有効状態として伝えます。 |
invalid | bool · false | 危険を示す枠線を描きます。動作を変えることも、エラーを読み上げることもありません。 |
名前とフォーカス、組み合わせ
| Prop | 型 / デフォルト | 用途 |
|---|---|---|
semanticLabel | String? · null | 支援技術に対してスイッチの名前を伝えます。スイッチ自体はラベルを描画しないため、指定しないとアクセシブルな名前が空になります。 |
focusNode | FocusNode? · null | 独自のフォーカスノードを渡します。渡さない場合はスイッチが内部のノードを生成し、破棄します。 |
autofocus | bool · false | スイッチがツリーに初めて挿入されたときにフォーカスを要求します。 |
thumbKey | Key? · null | 動くつまみを識別し、テストやツールがその位置とサイズを計測できるようにします。 |