Flutter - Radio List Tile 未填充颜色

Flutter - Radio List Tile not filled with color

我正在尝试制作一个年龄选择屏幕。下面是截图。

如您所见,收音机列表图块中没有填充任何颜色。我不知道我做错了什么。请告诉我。

  final ageRange = ["18 - 21", "21 - 26", "26+"];
  var selectedIndex = 0;

          ListView.builder(
            shrinkWrap: true,
            itemCount: ageRange.length,
            itemBuilder: (context, index) {
              return RadioListTile(
                value: index,
                groupValue: registerController.userAgeRange,
                selected: index == selectedIndex,
                onChanged: changeSelectedIndex,
                title: Text(ageRange[index]),
              );
            },
          ),




groupValue 属性 更改为 selectedIndex

这是我的例子

  final ageRange = ["18 - 21", "21 - 26", "26+"];
  var selectedIndex = 0;
  changeSelectedIndex(v) {
    selectedIndex = v;
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView.builder(
        shrinkWrap: true,
        itemCount: ageRange.length,
        itemBuilder: (context, index) {
          return RadioListTile(
            value: index,
            groupValue: selectedIndex,
            selected: index == selectedIndex,
            onChanged: changeSelectedIndex,
            title: Text(ageRange[index]),
          );
        },
      ),
    );
  }

你可以试试这个:

ListView.builder(
        shrinkWrap: true,
        itemCount: ageRange.length,
        itemBuilder: (context, index) {
          return RadioListTile(
            value: index,
            groupValue: selectedIndex,
            selected: selectedIndex == index,
            onChanged: changeSelectedIndex,
            title: Text(ageRange[index]),
          );
        },
      ),

@masum billah sanjid 等其他人的回答会起作用,但我认为在 RadioListTile 上提供数据类型会更好。

虽然值将是字符串,但我更喜欢

final ageRange = ["18 - 21", "21 - 26", "26+"];
  String? selectedValue;
  changeSelectedIndex(v) {
    setState(() {
      selectedValue = v;
    });
  }

///....
return RadioListTile<String>(
  value: ageRange[index],
  groupValue: selectedValue,
  selected: selectedValue == ageRange[index],
  onChanged: changeSelectedIndex,
  title: Text(ageRange[index]),
);

将您的 RadioListTile 包裹在 Container 中:

    return Container(
        color: Colors.blue,
        child: RadioListTile(
            value: index,
            groupValue: registerController.userAgeRange,
            selected: index == selectedIndex,
            onChanged: changeSelectedIndex,
            title: Text(ageRange[index]),
        ),
    );