我的下拉菜单工作正常。我可以从下拉列表中选择项目,并在我的应用程序中显示所选项目。现在,我不想显示从下拉列表中选择的项目,而是显示该特定项目的索引号。
我的下拉项目列表
List<String> qualities = [
"Creativity",
"Commitment",
"Planning",
"Optimism",
"Innovative"
];
空列表。在这里我存储选定的项目,然后使用 for 循环显示
List<String> selectedItem_ArrayList = []; //Storing DropDown selected data
我的下拉菜单
DropdownButton<String>(
underline: Container(),
icon: Icon(Icons.keyboard_arrow_down),
iconSize: 24,
isExpanded: true,
onChanged: (value) {
if (!selectedItem_ArrayList.contains(value)) {//=============================================>>>Items Disable after selection
setState(() {
selectedQualities = value!;
selectedItem_ArrayList.add(selectedQualities);
});
}//==============================================>>>Adding item into list
},
value: selectedQualities,
items: qualities.map((dropdownValue) => DropdownMenuItem(
child: Text(
dropdownValue,
maxLines: 2,
style: TextStyle(
color: selectedItem_ArrayList.contains(dropdownValue)? Colors.grey: null,
),
),
value: dropdownValue,
))
.toList(),
),
从下拉列表中显示所选项目
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
for (var i = 0; i < selectedItem_ArrayList.length; i++)
ListTile(
title: Text(selectedItem_ArrayList[i]), //### here I want to show index number of that particular selected item.
trailing: GestureDetector(//#################### remove specific index item
onTap: () {
setState(() {
selectedItem_ArrayList.remove(selectedItem_ArrayList[i]);
});
},
child: Icon(
Icons.delete_rounded,
color: Colors.red,
),
),
),
],
)
为每个项目选择使用indexOf
其唯一的显示索引号0
title: Text(selectedItem_ArrayList[i].indexOf(selectedItem_ArrayList[i]).toString()),
我知道您想在原始质量列表中显示元素的索引号?
最简单的方法是要么对原始列表进行检查,要么拥有一个索引表来快速获取所需的索引。
在第一种情况下,你要做的就是调用类似的东西qualities.indexOf(selectedItem_ArrayList[i])
,它应该可以解决问题。
如果你想要一个索引表,我可能会将质量列表转换为 Map<String, int> :
final qualities = <String, int>{
"Creativity": 0,
"Commitment": 1,
"Planning": 2,
"Optimism": 3,
"Innovative": 4,
};
然后,不要qualities.map
在 DropdownButton 中使用,而是使用qualities.keys.map
. 一旦您需要返回索引,您只需调用qualities[selectedItem_ArrayList[i])
.
作为一个快速说明,您selectedItem_ArrayList[i].indexOf(selectedItem_ArrayList[i])
不会做您期望它做的事情,就像您对列表中的特定元素执行 indexOf 一样,这意味着您在 String 上执行此操作。目前,它返回 0,因为您在 indexOf 的参数中传递的 Pattern 是字符串本身,因此它验证 Pattern 是从字符串的开头找到的。如果没有,它将返回-1。
如果您想在选择项列表中显示元素的索引,您可以使用selectedItem_ArrayList.indexOf(selectedItem_ArrayList[i])
.
希望能帮助到你!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句