3번 목차 Radio와 RadioListTile 에서 겪었던 오류이다.
enum Gender { MAN, WOMEN}
enum Sex { Man, Women}
class _MyHomePageState extends State<MyHomePage> {
Gender _gender = Gender.MAN;
Sex _sex = Sex.Man;
...
...
ListTile(
title: Text("남자"),
leading: Radio(
value: Gender.MAN,
groupValue: _gender,
onChanged: (value) {
setState(() {
_gender = value;
});
},
),
),
...
...
본래 초기 위젯을 작성하여 앱을 만들 때 위 코드와 같이 작성했었다.
실행하니까 다음과 같은 오류가 발생했다.

A value of type 'Object?' can't be assigned to a variable of type 'Gender'. Try changing the type of the variable, or casting the right-hand type to 'Gender'.
Radio class - material library - Dart API
에러가 발생하는 이유는
onchanged: () 안의 값의 타입이 정해져 있지 않아서이다.
오류를 해결하려면 다음과 같이 작성한다.
해결방법 1
enum Gender { MAN, WOMEN}
class _MyHomePageState extends State<MyHomePage> {
Gender _gender = Gender.MAN;
...
...
ListTile(
title: Text("남자"),
leading: Radio(
value: Gender.MAN,
groupValue: _gender,
onChanged: (Gender? value) {
setState(() {
_gender = value!; // flutter 2.0 Null Safety참고
});
},
),
),
...
...
해결방법 2
enum Gender { MAN, WOMEN}
class _MyHomePageState extends State<MyHomePage> {
Gender _gender = Gender.MAN;
...
...
ListTile(
title: Text("남자"),
leading: Radio(
value: Gender.MAN,
groupValue: _gender,
onChanged: (value) {
setState(() {
_gender = value as Gender;
});
},
),
),
...
...
해결방법 3