Flutter 转换 List<List<dynamic>>

Posted

技术标签:

【中文标题】Flutter 转换 List<List<dynamic>>【英文标题】:Flutter convert List<List<dynamic>> 【发布时间】:2021-11-17 00:53:01 【问题描述】:

我有一个 Flutter 应用程序,我在其中发出一个 http 请求,它为我带来了 json 数据。在用一个包格式化它之后,我得到一个动态类型列表的列表。这是它的样子:

[[2016-04-01, 85.5254], [2016-05-01, 89.1118], [2016-06-01, 91.8528], [2016-07-01, 93.7328], [2016-08-01, 93.9221], [2016-09-01, 95.0014], [2016-10-01, 97.2428], [2016-11-01, 98.8166]]

所以我创建了一个名为 IpcData 的类,它接收一个 String 和一个 double。

class IpcData 

  final String date;
  final double value;

  IpcData(this.date, this.value);


所以我们可以猜测 IpcData 实例如下所示:

IpcData(2016-08-01, 93.9221)

我不知道怎么做,但我想要一个方法,使用 List> 中的信息返回 List,看起来像:

[IpcData(2016-08-01, 93.9221), IpcData(2016-08-01, 93.9221), IpcData(2016-08-01, 93.9221),]

【问题讨论】:

【参考方案1】:

您可以在原始列表上使用 .map 函数来构建新列表。像这样的。

class IpcData 

  final String date;
  final double value;

  IpcData(this.date, this.value);
  
  @override
  String toString() 
    return '$date -> $value';
  


void main() 
  List<List<dynamic>> initList = [
    ['2016-04-01', 85.5254], ['2016-05-01', 89.1118], ['2016-06-01', 91.8528], 
    ['2016-07-01', 93.7328], ['2016-08-01', 93.9221], ['2016-09-01', 95.0014],
    ['2016-10-01', 97.2428], ['2016-11-01', 98.8166], ['2016-12-01', 99.8166]
  ];

  List<IpcData> ipcList = initList.map((e) => IpcData(e[0], e[1])).toList();
  
  print(ipcList);
  

【讨论】:

谢谢,效果很好!

以上是关于Flutter 转换 List<List<dynamic>>的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中将 List<List<dynamic>> 转换为 ArrayList

Flutter StreamProvider 'List<dynamic>' 不是类型转换中类型 'List<??>' 的子类型

Flutter 类型“Future<List<dynamic>>”不是类型转换中“List<dynamic>”类型的子类型

将 Future<List> 从 Firestore 转换为 List<String> - Flutter Firebase [重复]

Flutter - 有啥方法可以将字符串转换为列表并将 list<String> 转换回字符串?

Flutter 未处理的异常:类型“Null”不是类型转换中“List<dynamic>”类型的子类型