Flutter 如何修复Flatter中的RadioListile列表?
我有一份这样的清单 列表项列表=[ IdText(1,'hello'), IdText(2,'hallo'), IdText(3,'ciao') ]; 我想做一个放射科医生;我显示文本并将ID保存在地图中。但我有一个错误(所选按钮未着色),如何修复此错误? 下面是我的代码:Flutter 如何修复Flatter中的RadioListile列表?,flutter,radio-button,Flutter,Radio Button,我有一份这样的清单 列表项列表=[ IdText(1,'hello'), IdText(2,'hallo'), IdText(3,'ciao') ]; 我想做一个放射科医生;我显示文本并将ID保存在地图中。但我有一个错误(所选按钮未着色),如何修复此错误? 下面是我的代码: for(IdText list in itemList) RadioListTile( title: Text(list.te
for(IdText list in itemList)
RadioListTile(
title: Text(list.text),
groupValue: _map[item.fieldName],
onChanged: (value) {
setState(() {
_map[item.fieldName] = value.id;
});
print(_map[item.fieldName] );
},
value: list,
),
您可以构建一个customRadioGroup,它接收您的项目并处理更改
class CustomRadioGroup extends StatefulWidget {
final Function(IdText) onValueSelected;
final List<IdText> items;
const CustomRadioGroup({Key key, @required this.onValueSelected,this.items})
: super(key: key);
@override
_CustomRadioGroupState createState() => _CustomRadioGroupState();
}
class _CustomRadioGroupState extends State<CustomRadioGroup> {
var selectedValue;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
child: ListView.builder(
itemCount: widget.items.length,
itemBuilder: (context, position) {
return RadioListTile(
title: Text(widget.items[position].text),
groupValue: selectedValue,
onChanged: (value) {
setState(() {
selectedValue = value;
});
widget.onValueSelected(widget.items.firstWhere((element) => element.id==value));
},
value: widget.items[position].id);
}),
));
}
}
类CustomRadioGroup扩展StatefulWidget{
最终函数(IdText)onValueSelected;
最后清单项目;
常量CustomRadioGroup({Key Key,@required this.onValueSelected,this.items})
:super(key:key);
@凌驾
_CustomRadioGroupState createState()=>\u CustomRadioGroupState();
}
类_CustomRadioGroupState扩展状态{
var选择值;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(),
主体:容器(
子项:ListView.builder(
itemCount:widget.items.length,
itemBuilder:(上下文、位置){
回传放射科医生(
标题:文本(widget.items[position].Text),
groupValue:selectedValue,
一旦更改:(值){
设置状态(){
selectedValue=值;
});
onValueSelected(widget.items.firstWhere((element)=>element.id==value));
},
值:widget.items[position].id);
}),
));
}
}
传递onValueSelected回调函数,该函数在每次更改radiobutton选择时触发
class MyApp extends StatelessWidget {
final List<IdText> items = [ IdText(1,'hello'), IdText(2,'hallo'), IdText(3,'ciao') ];
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(accentColor: Colors.blue),
home: CustomRadioGroup(onValueSelected: onValueSelected, items: items),
);
}
onValueSelected(value) {
print(value);
}
}
类MyApp扩展了无状态小部件{
最终列表项=[IdText(1,'hello')、IdText(2,'hallo')、IdText(3,'ciao')];
@凌驾
小部件构建(构建上下文){
返回材料PP(
主题:主题数据(accentColor:Colors.blue),
主页:CustomRadioGroup(onValueSelected:onValueSelected,items:items),
);
}
onValueSelected(值){
印刷品(价值);
}
}
事实上,我想告诉你如何实现它。你的情况也差不多。我已经更新了答案。接受/向上投票(如果有帮助,谢谢:)