FlutterのRadioは、複数の選択肢から1つを選ぶためのウィジェットです。通常、ラジオボタンとして知られています。このウィジェットは、状態管理と連携して、選択された値を保存できます。以下は、FlutterのRadioを使用する方法のブログ形式のチュートリアルです。
FlutterのRadioの使用方法
基本的なラジオボタンの作成
FlutterのRadioを使用するには、まず、Radio
ウィジェットをインポートする必要があります。以下は、基本的なラジオボタンを作成する方法です。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My App',
home: Scaffold(
body: MyRadioWidget(),
),
);
}
}
class MyRadioWidget extends StatefulWidget {
@override
_MyRadioWidgetState createState() => _MyRadioWidgetState();
}
class _MyRadioWidgetState extends State<MyRadioWidget> {
int? _selectedValue = 1; // 初期値は1に設定
@override
Widget build(BuildContext context) {
return Center(
child: Column(
children: [
Radio(
value: 1,
groupValue: _selectedValue!,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
),
Radio(
value: 2,
groupValue: _selectedValue!,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
),
],
));
}
}
上記の例では、2つのラジオボタンを作成しています。value
は、選択された値を表します。groupValue
は、ラジオボタンが属するグループを識別します。onChanged
は、ラジオボタンが変更されたときに呼び出されるコールバック関数を指定します。この関数内で、setState
メソッドを呼び出して、選択された値を保存します。
ラジオボタンにテキストを追加する
ラジオボタンにテキストを追加するには、Text
ウィジェットを使用します。以下は、ラジオボタンにテキストを追加する方法です。(以降、上記サンプルコードのColumn(…)部分を抜粋して記載します)
Column(
children: [
ListTile(
leading: Radio(
value: 1,
groupValue: _selectedValue!,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
),
title: Text("選択肢1"),
),
ListTile(
leading: Radio(
value: 2,
groupValue: _selectedValue!,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
),
title: Text("選択肢2"),
),
],
)
上記の例では、`ListTile`ウィジェットを使用して、ラジオボタンとテキストを含むリストアイテムを作成しています。`leading`プロパティには、ラジオボタンを指定します。`title`プロパティには、リストアイテムのテキストを指定します。
ラジオボタンのスタイルを変更する
FlutterのRadioウィジェットには、スタイルを変更するためのいくつかのオプションがあります。以下は、ラジオボタンのスタイルを変更する方法の例です。
Column(
children: [
ListTile(
leading: Radio(
value: 1,
groupValue: _selectedValue,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
activeColor: Colors.green,
// 選択されたラジオボタンの色
focusColor: Colors.blue,
// ラジオボタンがフォーカスされたときの色
hoverColor: Colors.yellow,
// ラジオボタンがホバーされたときの色
),
title: Text("選択肢1"),
),
ListTile(
leading: Radio(
value: 2,
groupValue: _selectedValue,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
activeColor: Colors.green,
focusColor: Colors.blue,
hoverColor: Colors.yellow,
),
title: Text("選択肢2"),
),
],
)
上記の例では、activeColor
、focusColor
、およびhoverColor
プロパティを使用して、ラジオボタンの色を変更しています。
ラジオボタンのグループ化
ラジオボタンは、グループ内でのみ一意である必要があります。グループ内で同じgroupValue
を持つラジオボタンが複数ある場合、これらのラジオボタンはすべて同じグループに属すると見なされます。
以下は、複数のグループを持つラジオボタンを作成する方法の例です。
class _MyRadioWidgetState extends State<MyRadioWidget> {
int? _selectedValue1 = 1;
int? _selectedValue2 = 3;
@override
Widget build(BuildContext context) {
return Column(
children: [
Text("グループ1"),
ListTile(
leading: Radio(
value: 1,
groupValue: _selectedValue1,
onChanged: (value) {
setState(() {
_selectedValue1 = value;
});
},
),
title: Text("選択肢1"),
),
ListTile(
leading: Radio(
value: 2,
groupValue: _selectedValue1,
onChanged: (value) {
setState(() {
_selectedValue1 = value;
});
},
),
title: Text("選択肢2"),
),
Text("グループ2"),
ListTile(
leading: Radio(
value: 3,
groupValue: _selectedValue2,
onChanged: (value) {
setState(() {
_selectedValue2 = value;
});
},
),
title: Text("選択肢1"),
),
ListTile(
leading: Radio(
value: 4,
groupValue: _selectedValue2,
onChanged: (value) {
setState(() {
_selectedValue2 = value;
});
},
),
title: Text("選択肢2"),
),
],
);
}
}
上記の例では、_selectedValue1
と_selectedValue2
の2つの異なる変数を使用して、2つの異なるグループのラジオボタンを作成しています。各ラジオボタンは、対応するグループの値を保持するために、それぞれのgroupValue
プロパティに異なる変数を割り当てます。
まとめ
これで、FlutterのRadioウィジェットの基本的な使い方と、ラジオボタンをスタイル付けし、グループ化する方法について学びました。これらの例を参考にして、自分のFlutterアプリにラジオボタンを実装してみてください。