Flutter 如何返回StatefulWidget包含的值以在ListView.builder中使用它?
我有一个问题,碰巧我有一个Flutter 如何返回StatefulWidget包含的值以在ListView.builder中使用它?,flutter,dart,Flutter,Dart,我有一个问题,碰巧我有一个StatefulWidget,其方法返回一个ListView.builder ListView.builder,它有一列和两个子项:textField,还有一行和两个收音机 RadioButton是在另一个StatefulWidget中构建的,对于这个StatefulWidget,我对已选择的值感兴趣,但我需要在以前的StatefulWidget中使用这个返回值 我不知道除了返回一个widget来返回另一个值之外,是否还有一种方法可以让一个StatefulWidgetw
StatefulWidget
,其方法返回一个ListView.builder
ListView.builder
,它有一列和两个子项:textField
,还有一行和两个收音机
RadioButton是在另一个StatefulWidget
中构建的,对于这个StatefulWidget,我对已选择的值感兴趣,但我需要在以前的StatefulWidget
中使用这个返回值
我不知道除了返回一个widget来返回另一个值之外,是否还有一种方法可以让一个StatefulWidget
wigdet返回另一个值,请帮助我
以下是ListView.builder:
ListView.builder(
滚动方向:轴垂直,
收缩膜:对,
itemCount:preguntas.secciones[0]。preguntas.length,
itemBuilder:(构建上下文,int i){
最终预测=问题列表[i];
返回列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
文本(pregunta.description,
样式:TextStyle(fontFamily:“OpenSans粗体”),
RadioButtom(),
TextFormField(
启用:
(!\u radioValue&&pregunta.respuestas[0]。pregunta.obligatoria)
?错误
:没错,
验证器:(值){
if(pregunta.respuestas[0]。pregunta.obligatoria==true&&
值(i空){
返回“Por-favor Ingree texto”;
}
返回null;
},
装饰:输入装饰(
Hintmaxline:500,
hintText:pregunta.respuestas[0]。pregunta.Description,
辛茨风格:
TextStyle(fontFamily:“OpenSans常规”,fontSize:14.0),
),
一旦更改:(值){
preguntasGlobal=preguntas;
//preguntasGlobal[i]。respuestas[0]。comentario=value;
//preguntasGlobal[i]。respuestas[0]。respuesta=true;
},
),
尺寸箱(高度:20.0)
],
);
},
);
这是RadioButtom StatefulWidget
class RadioButtom扩展StatefulWidget{
@凌驾
_RadioButtomState createState();
}
类_RadioButtomState扩展状态{
布尔值=
false;//美国东南部
@凌驾
小部件构建(构建上下文){
返回行(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
无线电(
价值观:正确,
groupValue:_radioValue,
一旦更改:(值){
设置状态(){
_放射性值=放射性值;
});
}),
正文(
“是的”,
样式:TextStyle(
字体大小:12.0,
fontFamily:“OpenSans常规”,
),
),
无线电(
值:false,
groupValue:_radioValue,
一旦更改:(值){
设置状态(){
_放射性值=放射性值;
});
}),
正文(
“不”,
样式:TextStyle(
字体大小:12.0,
fontFamily:“OpenSans常规”,
),
)
],
);
}
}
您可以提升状态。您不需要将状态存储在RadioButtom
中,而是将状态存储在包含ListView
的小部件中,例如ListViewBuilder
更改RadioButtom
的构造函数以接受值和回调
class RadioButtom扩展StatefulWidget{
@凌驾
_RadioButtomState createState();
RadioButtom({this.value,this.onChanged});
最终布尔值;
变更后的最终价值;
}
使用状态中的字段
收音机(
价值观:正确,
groupValue:widget.value,
onChanged:widget.onChanged,
),
将您的状态存储在ListViewBuilder
//例如
列表_答案=[];//使用所需的元素数初始化它
在项目生成器中使用它
radiobutom(
值:_回答[i],
一旦更改:(值){
设置状态(){
_答案[i]=价值;
});
}),
),
非常感谢您的回答,但我有一个问题,如果我将设置状态放在我的list.builder中,当我从radioButtom中选择一个选项时,它会自动刷新屏幕,并且没有明显的选项标记。你能帮我做这个吗?看看这个例子。如果它刷新了您的屏幕,那么您必须找出您的小部件中的其他组件导致了它。我非常感谢您的时间和好意,您的帮助对我很有帮助。我发现解决问题的另一种方法是使用函数(x),它帮助我让Radiobuttom与我的ListView.builder通信。