我在网上搜索了很多答案。
我在字母列表上写了迭代,并使用“地图”类在屏幕上放置了卡片
在代码中,您可以看到我已经排成一行,并使用“地图”将卡片上所有的userBoard打印到了屏幕上。我想在其中添加一些逻辑,所以我需要获取元素的ID(用于录音事件)。有办法可以做到吗?
实际上我想通过userBoard获取元素的特定索引
码:
Widget build(BuildContext context) { return Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: <Widget>[ Row( children: userBoard .map((element) => Stack(children: <Widget>[ Align( alignment: Alignment(0, -0.6), child: GestureDetector( onTap: (() { setState(() { // print("element=${element.toString()}"); // print("element=${userBoard[element]}"); }); }), child: SizedBox( width: 40, height: 60, child: Card( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(5.0), ), child: Center( child: Text(element, style: TextStyle(fontSize: 30)), )), ), ), ) ])) .toList(), ) ], ),
}
图片 -每张卡都是地图的“元素”。我想获取函数onTap的索引。
谢谢。
要访问索引,您需要使用asMap运算符将列表转换为地图。
例
final fruitList = ['apple', 'orange', 'mango']; final fruitMap = myList.asMap(); // {0: 'apple', 1: 'orange', 2: 'mango'} // To access 'orange' use the index 1. final myFruit = fruitMap[1] // 'orange' // To convert back to list fruit fruitListAgain = fruitMap.values.toList();
您的密码
userBoard.asMap().map((i, element) => MapEntry(i, Stack( GestureDetector(onTap: () { setState(() { // print("element=${element.toString()}"); // print("element=${userBoard[i].toString()}"); }); }), ))).values.toList();