Matías Baeza Graf
Matías Baeza Graf

Reputation: 123

Flutter convert List<List<dynamic>>

I have a Flutter app in which I make an http request, which brings me json data. Afer formatting it with a package I get a list of lists of dynamic type. Here´s what it looks like:

[[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]]

So I created a class named IpcData, which recieves a String and a double.

class IpcData {

  final String date;
  final double value;

  IpcData(this.date, this.value);

}

So we could guess that an IpcData instance would look like the following:

IpcData(2016-08-01, 93.9221)

I can´t figure out how, but I´d like to have a method that using the information from the List<List<dynamic>> to return a List<IpcData>, that would looke like:

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

Upvotes: 0

Views: 737

Answers (1)

jabbson
jabbson

Reputation: 4913

You can use .map function on the original list to construct the new one. Something like this.

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);
  
}

Upvotes: 1

Related Questions