Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振单选按钮不响应单击_Flutter_Dart - Fatal编程技术网

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,
一旦更改:(字符串?值){
状态变化(值);
},
),
),
],
);
},
);
}