Search code examples
listflutterdartmobilebuilder

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),]

Solution

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