flutter - 我想在 RadioListTile 中选择特定的收音机项目,
问题描述
如果我选择第一个索引 RadioListTile,则选择扩展 Tile 中的所有第一个索引这是我的问题,在这里我想选择特定的收音机列表并将索引添加到列表
class Addon extends StatefulWidget {
@override
_AddonState createState() => _AddonState();
} class _AddonState extends State<Addon> {
List addonItem = ["Cool Drinks", "Extra Sauce"];
int dummy;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: ListView.builder(
dragStartBehavior: DragStartBehavior.down,
physics: ScrollPhysics(),
shrinkWrap: true,
itemCount: addonItem.length,
itemBuilder: (context, index) {
return ExpansionTile(
initiallyExpanded: false,
title: Text(
addonItem[index],
),
children: [
for (int i = 0; i < 3; i++)
RadioListTile(
value: i,
title: Text("item $i"),
groupValue: dummy,
activeColor: Theme.of(context).primaryColor,
onChanged: (val) {
print(val);
setState(() {
dummy = val;
});
},
)
],
);
}),
),
);
} }
解决方案
问题是您正在使用int dummy;
两个按钮列表的选定值,您可以使用两个虚拟值并将条件添加到子项的呈现中,ExpansionTile
如下所示:
class Addon extends StatefulWidget {
@override
_AddonState createState() => _AddonState();
}
class _AddonState extends State<Addon> {
List addonItem = ["Cool Drinks", "Extra Sauce"];
int dummy1;
int dummy2;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: ListView.builder(
physics: ScrollPhysics(),
shrinkWrap: true,
itemCount: addonItem.length,
itemBuilder: (context, index) {
return ExpansionTile(
initiallyExpanded: false,
title: Text(
addonItem[index],
),
children: [
if (addonItem[index] == 'Cool Drinks')
for (int i = 0; i < 3; i++)
RadioListTile(
value: i,
title: Text("item $i"),
groupValue: dummy1,
activeColor: Theme.of(context).primaryColor,
onChanged: (val) {
print(val);
setState(
() {
dummy1 = val;
},
);
},
),
if (addonItem[index] == 'Extra Sauce')
for (int i = 0; i < 3; i++)
RadioListTile(
value: i,
title: Text("item $i"),
groupValue: dummy2,
activeColor: Theme.of(context).primaryColor,
onChanged: (val) {
print(val);
setState(
() {
dummy2 = val;
},
);
},
)
],
);
},
),
),
);
}
}
这将检查值是否是您正在访问的索引addonItem
,如果该值是'Cool Drinks'
您使用其中一个虚拟值,如果索引是'Extra Sauce'
您使用另一个值,这确保您不会为两个列表共享相同的值。
这仅在您没有将值动态添加到 addonItem 列表时才有效。
推荐阅读
- python - OOP,我想在切换帧时取消任何功能
- unit-testing - 使用 ProducerTemplate 测试时,骆驼身体丢失 500 状态
- ruby - "b" 的未定义方法 `shift':String (NoMethodError) Ruby
- junit - Mockito:模拟一个由一系列方法链组成的参数
- python - JupyterLab 内核在叶中绘制 100k 标记时死亡
- bash - Bash-如何将文件夹中的多个文件编码为 base 64。目前我的代码可以编码一个文件
- android - 在 Play 商店中找不到更改 Android 应用隐私政策的选项
- typescript - 如何表示可以是多种类型的数据
- google-api - 只需发送权限即可使用 Gmail api 发送回复
- java - 包 XX 仅通过 Mac 终端不存在