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]),
),
);
我正在尝试制作一个年龄选择屏幕。下面是截图。
如您所见,收音机列表图块中没有填充任何颜色。我不知道我做错了什么。请告诉我。
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]),
),
);