一尘不染

Flutter-从List.map()获取迭代索引

flutter

我在网上搜索了很多答案。

我在字母列表上写了迭代,并使用“地图”类在屏幕上放置了卡片

在代码中,您可以看到我已经排成一行,并使用“地图”将卡片上所有的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的索引。

谢谢。


阅读 605

收藏
2020-08-13

共1个答案

一尘不染

要访问索引,您需要使用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();
2020-08-13