将列表存储在另一个列表中的列表中

Posted

技术标签:

【中文标题】将列表存储在另一个列表中的列表中【英文标题】:store list inside list in another list flutter 【发布时间】:2021-09-12 19:29:13 【问题描述】:

我有这个来自 API 的 json 响应


    "success": true,
    "routes": [
        
            "_id": "613cc90623db8f3418f59f50",
            "transit": [
                "Addis Ababa",
                "Gondar"
            ],
            "startingPlace": 
                "country": "Ethiopia",
                "city": "Addis Ababa"
            ,
            "destination": 
                "country": "Ethiopia",
                "city": "Addis Ababa"
            ,
            "distance": 55,
            "__v": 0,
            "schedule": [
                
                    "_id": "613e200446560f0508778adf",
                    "boardingDate": "2020-01-01T00:00:00.000Z",
                    "arrivalDate": "2020-02-01T00:00:00.000Z",
                    "driverAssistantId": "612de5d3cf56fc27e8abf629",
                    "routeId": "613cc90623db8f3418f59f50",
                    "__v": 0
                
            ]
        
    ]

我想检索routes 中的schedule 列表,这是执行发布请求的函数。它返回Schedules 模型的列表

Future<List<Schedule>> searchSchedule(SearchScheduleModel model) async 
  String token = await getToken();
  Map<String, String> headers = 
    "Content-Type": "application/json",
    'Authorization': 'Bearer $token'
  ;
  final allPlacesURl = Uri.parse("$ipAddress/common/searchBySpAndDes");
  var body = searchScheduleModelToJson(model);

  var response = await http.post(allPlacesURl, headers: headers, body: body);
  if (response.statusCode == 200) 
    var body = schedulesModelFromJson(response.body);
    List<Route> route = body.routes;
    List<Schedule> schedules = [];

    //the error is shown here, how can i map a list within alist

    schedules = route.map((e) => e.schedule);

    return schedules;
  
  return json.decode(response.body);

但我有这个错误

A value of type 'Iterable<List<Schedule>>' can't be assigned to a variable of type 'List<Schedule>'.

我不知道如何正确映射它..

【问题讨论】:

转到此处app.quicktype.io 并按原样复制粘贴您的json。它会为你生成类。 这就是我用来生成类的...但我不知道如何映射列表..并将映射的列表存储在另一个列表中..以便我可以返回它。 @esentis 【参考方案1】:

错误告诉您您正在尝试将 Iterable 分配给 List。我不是 100% 确定,因为我没有看到 Route 模型,但在我看来,Route 有一个 List 类型的属性 schedule。

修复它 删除这一行:

schedules = route.map((e) => e.schedule);

并用这一行替换它

for (var route in routes) 
 schedules.addAll(route.schedule);

【讨论】:

你不知道你是如何让我免于数小时的头痛。非常感谢你。你能解释一下 for 循环的作用吗。它是否将路线中的项目插入时间表列表或者.. 是的,完全正确。 for 正在遍历路线。对于路线中的每条路线,我们将 route.schedule 中的所有时间表插入到时间表列表中 您能帮我解决这个问题吗?我正在学习 getx,但我无法让它工作.. ***.com/questions/69170332/…

以上是关于将列表存储在另一个列表中的列表中的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个python文件中的列表中附加一些东西?

如何在存储过程中创建字符串列表变量以及如何在另一个查询中使用它?

从类对象列表中显示listBox.SelectedItems

保存下拉列表的选定值并在另一个下拉列表/重复下拉列表中默认分配它

emacs中,怎么样将文件列表中的文件在另一个窗口打开?

python 判断某个列表中的所有元素在另一个列表中