Flutter 颤振单选按钮不响应单击
我在表单字段中有两个单选按钮的颤振代码Flutter 颤振单选按钮不响应单击,flutter,dart,Flutter,Dart,我在表单字段中有两个单选按钮的颤振代码 导入“包装:颤振/材料.省道”; 枚举性别{男性,女性} 类RadioFormField扩展了FormField{ 放射成形场({ FormFieldSetter?已保存, FormFieldValidator?验证程序, 字符串initialValue=“”, AutovalidateMode AutovalidateMode=AutovalidateMode.always, }):超级( 已保存:已保存, 验证器:验证器, initialValue:i
导入“包装:颤振/材料.省道”;
枚举性别{男性,女性}
类RadioFormField扩展了FormField{
放射成形场({
FormFieldSetter?已保存,
FormFieldValidator?验证程序,
字符串initialValue=“”,
AutovalidateMode AutovalidateMode=AutovalidateMode.always,
}):超级(
已保存:已保存,
验证器:验证器,
initialValue:initialValue,
autovalidateMode:autovalidateMode,
生成器:(FormFieldState){
字符串MALERADIOBUTTETLE='男性';
字符串FemaleRadioButtontile='Female';
字符串?_genderValue='male';
返回行(
mainAxisSize:mainAxisSize.min,
儿童:[
扩大(
孩子:放射科医生(
标题:文本(MaleRadioButtontile),
值:Gender.male.toString(),
groupValue:_genderValue,
一旦更改:(字符串?值){
state.didChange(_genderValue='male');
},
),
),
扩大(
孩子:放射科医生(
标题:文本(FemaleRadioButtontile),
值:Gender.female.toString(),
groupValue:_genderValue,
一旦更改:(字符串?值){
state.didChange(_genderValue='female');
},
),
),
],
);
},
);
}
问题是在它们呈现出没有一个响应选择之后。我似乎不明白出了什么问题。我遗漏了什么?这里有几件事需要解决 首先,
state.didChange
是一个函数,它采用单个参数值
,用于使用提供的值更新表单的状态
那么就这样说吧,
onChanged: (String value) {
state.didChange(value);
},
接下来,您总是使用此groupValue:\u genderValue
发送male
作为groupValue
。因为\u genderValue
一直被硬编码为男性
那么换成这个,
groupValue: state.value
最后,您的代码将是
class RadioFormField extends FormField<String> {
RadioFormField({
FormFieldSetter<String>? onSaved,
FormFieldValidator<String>? validator,
String initialValue = '',
AutovalidateMode autovalidateMode = AutovalidateMode.always,
}) : super(
onSaved: onSaved,
validator: validator,
initialValue: initialValue,
autovalidateMode: autovalidateMode,
builder: (FormFieldState<String> state) {
String maleRadioButtonTitle = 'Male';
String femaleRadioButtonTitle = 'Female';
return Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Expanded(
child: RadioListTile<String>(
title: Text(maleRadioButtonTitle),
value: Gender.male.toString(),
groupValue: state.value,
onChanged: (String? value) {
state.didChange(value);
},
),
),
Expanded(
child: RadioListTile<String>(
title: Text(femaleRadioButtonTitle),
value: Gender.female.toString(),
groupValue: state.value,
onChanged: (String? value) {
state.didChange(value);
},
),
),
],
);
},
);
}
class RadioFormField扩展了FormField{
放射成形场({
FormFieldSetter?已保存,
FormFieldValidator?验证程序,
字符串initialValue=“”,
AutovalidateMode AutovalidateMode=AutovalidateMode.always,
}):超级(
已保存:已保存,
验证器:验证器,
initialValue:initialValue,
autovalidateMode:autovalidateMode,
生成器:(FormFieldState){
字符串MALERADIOBUTTETLE='男性';
字符串FemaleRadioButtontile='Female';
返回行(
mainAxisSize:mainAxisSize.min,
儿童:[
扩大(
孩子:放射科医生(
标题:文本(MaleRadioButtontile),
值:Gender.male.toString(),
groupValue:state.value,
一旦更改:(字符串?值){
状态变化(值);
},
),
),
扩大(
孩子:放射科医生(
标题:文本(FemaleRadioButtontile),
值:Gender.female.toString(),
groupValue:state.value,
一旦更改:(字符串?值){
状态变化(值);
},
),
),
],
);
},
);
}
这里有几件事需要解决
首先,
state.didChange
是一个函数,它采用单个参数值
,用于使用提供的值更新表单的状态
那么就这样说吧,
onChanged: (String value) {
state.didChange(value);
},
接下来,您总是使用此groupValue:\u genderValue
发送male
作为groupValue
。因为\u genderValue
一直被硬编码为男性
那么换成这个,
groupValue: state.value
最后,您的代码将是
class RadioFormField extends FormField<String> {
RadioFormField({
FormFieldSetter<String>? onSaved,
FormFieldValidator<String>? validator,
String initialValue = '',
AutovalidateMode autovalidateMode = AutovalidateMode.always,
}) : super(
onSaved: onSaved,
validator: validator,
initialValue: initialValue,
autovalidateMode: autovalidateMode,
builder: (FormFieldState<String> state) {
String maleRadioButtonTitle = 'Male';
String femaleRadioButtonTitle = 'Female';
return Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Expanded(
child: RadioListTile<String>(
title: Text(maleRadioButtonTitle),
value: Gender.male.toString(),
groupValue: state.value,
onChanged: (String? value) {
state.didChange(value);
},
),
),
Expanded(
child: RadioListTile<String>(
title: Text(femaleRadioButtonTitle),
value: Gender.female.toString(),
groupValue: state.value,
onChanged: (String? value) {
state.didChange(value);
},
),
),
],
);
},
);
}
class RadioFormField扩展了FormField{
放射成形场({
FormFieldSetter?已保存,
FormFieldValidator?验证程序,
字符串initialValue=“”,
AutovalidateMode AutovalidateMode=AutovalidateMode.always,
}):超级(
已保存:已保存,
验证器:验证器,
initialValue:initialValue,
autovalidateMode:autovalidateMode,
生成器:(FormFieldState){
字符串MALERADIOBUTTETLE='男性';
字符串FemaleRadioButtontile='Female';
返回行(
mainAxisSize:mainAxisSize.min,
儿童:[
扩大(
孩子:放射科医生(
标题:文本(MaleRadioButtontile),
值:Gender.male.toString(),
groupValue:state.value,
一旦更改:(字符串?值){
状态变化(值);
},
),
),
扩大(
孩子:放射科医生(
标题:文本(FemaleRadioButtontile),
值:Gender.female.toString(),
groupValue:state.value,
一旦更改:(字符串?值){
状态变化(值);
},
),
),
],
);
},
);
}