Flutterのラジオボタンにはvalidatorがない。そもそもラジオボタングループのようなウィジェットもない。
ではラジオボタンもFormの _formKey.currentState!.validate()
でバリデーションさせたい時にはどうしたらよいか。
Flutter FormBuilderというパッケージにそういうのがあるのでそれを使うと簡単。
flutter_form_builder | Flutter Package
FormBuilderRadioGroup<String>(
name: 'gender',
decoration: const InputDecoration(
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
),
onChanged: onGenderChanged,
validator: (value) {
if (value == null || value.isEmpty) {
return '性別を選択してください。';
}
return null;
},
options: const [
FormBuilderFieldOption(value: 'man', child: Text('男性')),
FormBuilderFieldOption(value: 'woman', child: Text('女性')),
],
)
デフォルトだとラッパーの枠がつくのでdecorationのborderで消している。
あとはデフォルト選択で良ければいちいちバリデーションを入れずにそれでも良いような気もする。
ちなみにどうしてもカスタマイズが必要な場合は下記のように自作も可能。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント