Flutter 如何修复Flatter中的RadioListile列表?

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

我有一份这样的清单 列表项列表=[ IdText(1,'hello'), IdText(2,'hallo'), IdText(3,'ciao') ]; 我想做一个放射科医生;我显示文本并将ID保存在地图中。但我有一个错误(所选按钮未着色),如何修复此错误? 下面是我的代码:

             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(值){
印刷品(价值);
}
}

事实上,我想告诉你如何实现它。你的情况也差不多。我已经更新了答案。接受/向上投票(如果有帮助,谢谢:)