首页 > 解决方案 > Flutter(Dart) - 如何从列表中的列表中读取?

问题描述

所以我有这种格式的数据:

List users = [
  {
   "id": "p1",
   "name": "John Doe",
   "age": "44",
   "imageUrl": [
   {
    "assets/images/anastasia-vityukova-unsplash-blackandwhiteimage.png",
    "assets/images/anastasia-vityukova-unsplash.png",
  }
 ],
 "profession": "Financial Consultant"
 },

{
 "id": "p2",
 "name": "John Doe2",
 "age": "42",
 "imageUrl": [
  {
    "assets/images/good-faces-hiba-unsplash-blackandwhiteimage.png",
    "assets/images/good-faces-hiba-unsplash.jpg",
  }
 ],
 "profession": "Financial Consultant"
 },
];

如何阅读 imageUrls?

            decoration: BoxDecoration(
          image: DecorationImage(
              image: AssetImage(lstUsers[index]["imageUrl"][0]),
              fit: BoxFit.cover),
        ),

在此处输入图像描述

标签: jsonlistflutterdart

解决方案


正如错误所说,Dart 将该字段视为 Set{}或更具体地视为LinkedHashSet. 集合不实现[]运算符,但您可以使用方法访问其元素elementAt

lstUsers[0]["imageUrl"][0].elementAt(1)

直到lstUsers[0]["imageUrl"][0]您选择了数组中的第一个元素,但请注意,数组不仅由字符串组成,而且是一个包含字符串的集合。

[{    "assets/images/anastasia-vityukova-unsplash-blackandwhiteimage.png",
    "assets/images/anastasia-vityukova-unsplash.png",  }]

这就是你必须用来.elementAt()访问字符串的原因。我会建议您是否有能力放下{}琴弦,以便更容易访问。或者甚至更好地创建管理 JSON 的序列化和反序列化的类。一个不错的起点是quicktype


推荐阅读