Checkbox
Checkbox Widgetはユーザーから一つまたは複数の情報を選択させる場合に有効です。
ここではFlutterから提供されているCheckbox Widgetの使い方と応用例を解説します。
- Checkbox
Checkbox
は一般的なシンプルなチェックボックスのWidgetです。onChange
の値をNullにすることで、フィールドを非活性にすることができます。
Checkbox(value: isChecked,onChanged: (val) {if (val == null) return;setState(() {isChecked = val;});}),Checkbox(value: isChecked,onChanged: null)
- CheckboxListTile
CheckboxListTile
はラベル付きのCheckboxを作成したい場合に有効です。title
を使用することで、Checkboxにラベルをつけることができます。Checkbox()
と同様に、onChange
の値をNullにすることで、フィールドを非活性にすることができます。
SizedBox(width: 300,child: CheckboxListTile(title: const Text("IconLabel"),subtitle: const Text("Label with description"),secondary: const Icon(Icons.notifications_none_rounded),value: isChecked,onChanged: (value) {if (value == null) return;setState(() {isChecked = value;});},),),
activeColor
: value=true の時の背景の色hoverColor
: カーソルホバー時の背景の色
などの値を変更することで、Checkbox Widgetでは細かく色を指定することができます。
Checkbox(activeColor: Colors.blue,hoverColor: Colors.blue[50],value: isChecked,onChanged: (value) {if (value == null) return;setState(() {isChecked = value;});}),
- FormField
Checkbox Widgetで入力値の検証を行うためにはFormField
を使用することで対応できます。Form()
で囲い、formKey
を設定しなければならないことに注意してください。validator
の値を組み換えれば自在にValidationを作成することができます。
FormField(autovalidateMode: AutovalidateMode.always,initialValue: false,validator: (value) {if (value != true) {return "You need to accept terms!";}return null;},builder: (FormFieldState<bool> state) {return SizedBox(width: 300,child: CheckboxListTile(title: const Text("Agree Terms of Service"),subtitle: state.hasError? Text(state.errorText!,style: const TextStyle(color: Colors.red),): nullvalue: state.value,onChanged: (val) {state.didChange(val);}),);})
さらに詳しく知りたい場合は、以下の公式ドキュメントから参照してください。