Flutter 如何在省道颤振中转换动态列表

Flutter 如何在省道颤振中转换动态列表,flutter,dart,Flutter,Dart,任何关于如何在dart中解决此问题的帮助都将非常有用。 我正在解析一个csv文件,它返回一个动态列表列表 List<List<dynamic>> stores = [ // id - Store - Store Address - Invoice reference - invoice amount - Due Date ['C000015', 'PAULS', '1ST STREET STORE', 'XT1016165', -3230.19, 08/05/2

任何关于如何在dart中解决此问题的帮助都将非常有用。 我正在解析一个csv文件,它返回一个动态列表列表

List<List<dynamic>> stores = [
  // id - Store - Store Address - Invoice reference - invoice amount - Due Date

  ['C000015', 'PAULS', '1ST STREET STORE', 'XT1016165', -3230.19, 08/05/2021], 
  ['C000015', 'PAULS', '1ST STREET STORE', 'XT1016167', -2782.5, 08/05/2021], 
  ['C000015', 'PAULS', '53TH AVENUE STORE', 'XT1016046', -1856.51, 02/05/2021], 
  ['C000015', 'PAULS', '53TH AVENUE STORE', 'XT1016164', -3230.19, 08/05/2021], 
  ['C000066', 'SAPHYR', '124TH ST STORE', 'XT1016165', -3230.19, 08/05/2021], 
  ['C000066', 'SAPHYR', '124TH ST STORE', 'XT1016167',  -2782.5, 08/05/2021], 
  ['C000066', 'SAPHYR', 'STORE 73', 'XT1016046',  -1856.51, 02/05/2021], 
  ['C000066', 'SAPHYR', 'STORE 73', 'XT1016164', -3230.19, 08/05/2021], 
  ['C000066', 'SAPHYR', 'STORE 73', 'XT1016164',  -3310.19, 08/05/2021], 
];
列出存储=[
//id-门店-门店地址-发票参考-发票金额-到期日期
[C000015'、'PAULS'、'1ST STREET STORE'、'XT1016165'、-3230.1192021年5月8日],
[C000015'、'PAULS'、'1ST STREET STORE'、'XT1016167'、-2782.52021年5月8日],
[C000015'、'PAULS'、'53大道商店'、'XT1016046'、-1856.512021年5月2日],
[C000015'、'PAULS'、'53大道商店'、'XT1016164'、-3230.1192021年5月8日],
['C000066','SAPHYR','124街商店','XT1016165',-3230.1192021年5月8日],
['C000066'、'SAPHYR'、'124街商店'、'XT1016167'、-2782.52021年5月8日],
['C000066','SAPHYR','Store73','XT1016046',-1856.512021年5月2日],
['C000066','SAPHYR','STORE 73','XT1016164',-3230.19,08/05/2021],
['C000066','SAPHYR','STORE 73','XT1016164',-3310.19,08/05/2021],
];
我如何解析上面的列表以得到下面的结果,因为我知道有一个很大的商店列表。 其想法是将每个共享相同id的商店合并到一个新列表中

List<dynamic> PAULS = [
  // id - Store - Store Address - Invoice reference - invoice amount - Due Date
  ['C000015', 'PAULS', '1ST STREET STORE', 'XT1016165', -3230.19, 08/05/2021], 
  ['C000015', 'PAULS', '1ST STREET STORE', 'XT1016167', -2782.5, 08/05/2021], 
  ['C000015', 'PAULS', '53TH AVENUE STORE', 'XT1016046', -1856.51, 02/05/2021], 
];

List<dynamic> SAPHYR = [
  // id - Store - Store Address - Invoice reference - invoice amount - Due Date
  ['C000066', 'SAPHYR', '124TH ST STORE', 'XT1016165', -3230.19, 08/05/2021], 
  ['C000066', 'SAPHYR', '124TH ST STORE', 'XT1016167',  -2782.5, 08/05/2021], 
  ['C000066', 'SAPHYR', 'STORE 73', 'XT1016046',  -1856.51, 02/05/2021], 
  ['C000066', 'SAPHYR', 'STORE 73', 'XT1016164', -3230.19, 08/05/2021], 
  ['C000066', 'SAPHYR', 'STORE 73', 'XT1016164',  -3310.19, 08/05/2021], 
];
List PAULS=[
//id-门店-门店地址-发票参考-发票金额-到期日期
[C000015'、'PAULS'、'1ST STREET STORE'、'XT1016165'、-3230.1192021年5月8日],
[C000015'、'PAULS'、'1ST STREET STORE'、'XT1016167'、-2782.52021年5月8日],
[C000015'、'PAULS'、'53大道商店'、'XT1016046'、-1856.512021年5月2日],
];
列表SAPHYR=[
//id-门店-门店地址-发票参考-发票金额-到期日期
['C000066','SAPHYR','124街商店','XT1016165',-3230.1192021年5月8日],
['C000066'、'SAPHYR'、'124街商店'、'XT1016167'、-2782.52021年5月8日],
['C000066','SAPHYR','Store73','XT1016046',-1856.512021年5月2日],
['C000066','SAPHYR','STORE 73','XT1016164',-3230.19,08/05/2021],
['C000066','SAPHYR','STORE 73','XT1016164',-3310.19,08/05/2021],
];

您可以使用以下方法:

Map groupBy(列出存储){
return stores.fold({},(map,element){
return map..putIfAbsent(元素[1],()=>[])。add(元素);
});
} 
像这样使用它:

列出存储=[
[C000015'、'PAULS'、'1ST STREET STORE'、'XT1016165'、-3230.1192021年5月8日],
[C000015'、'PAULS'、'1ST STREET STORE'、'XT1016167'、-2782.52021年5月8日],
[C000015'、'PAULS'、'53大道商店'、'XT1016046'、-1856.512021年5月2日],
[C000015'、'PAULS'、'53大道商店'、'XT1016164'、-3230.1192021年5月8日],
['C000066','SAPHYR','124街商店','XT1016165',-3230.1192021年5月8日],
['C000066'、'SAPHYR'、'124街商店'、'XT1016167'、-2782.52021年5月8日],
['C000066','SAPHYR','Store73','XT1016046',-1856.512021年5月2日],
['C000066','SAPHYR','STORE 73','XT1016164',-3230.19,08/05/2021],
['C000066','SAPHYR','STORE 73','XT1016164',-3310.19,08/05/2021],
];
打印(分组(门店));
输出是一个映射,其中哪个键是存储列表中的存储名称及其值

{
  "PAULS": [
    ["C000015", "PAULS", "1ST STREET STORE", "XT1016165", -3230.19, "08/05/2021"],
    ["C000015", "PAULS", "1ST STREET STORE", "XT1016167", -2782.5, "08/05/2021"],
    ["C000015", "PAULS", "53TH AVENUE STORE", "XT1016046", -1856.51, "02/05/2021"],
    ["C000015", "PAULS", "53TH AVENUE STORE", "XT1016164", -3230.19, "08/05/2021"]
  ],
  "SAPHYR": [
    ["C000066", "SAPHYR", "124TH ST STORE", "XT1016165", -3230.19, "08/05/2021"],
    ["C000066", "SAPHYR", "124TH ST STORE", "XT1016167", -2782.5, "08/05/2021"],
    ["C000066", "SAPHYR", "STORE 73", "XT1016046", -1856.51, "02/05/2021"],
    ["C000066", "SAPHYR", "STORE 73", "XT1016164", -3230.19, "08/05/2021"],
    ["C000066", "SAPHYR", "STORE 73", "XT1016164", -3310.19, "08/05/2021"],
  ]
}

List PAULS=stores.where((数据)=>data[1]==“PAULS”).toList()
但是如何在没有硬代码的情况下动态地完成它?这里有200个Rowstory,我已经添加了一个答案。看看这是否解决了你的问题。