简体   繁体   中英

how to parse and fetch this array flutter

I found an example of event management that I would like to use this is my error

type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Iterable'

initially I have this array

 loadPreviousEvents() {
    mySelectedEvents = {
      "2022-09-13": [
        {"eventDescp": "11", "eventTitle": "111"},
        {"eventDescp": "22", "eventTitle": "22"}
      ],
      "2022-09-30": [
        {"eventDescp": "22", "eventTitle": "22"}
      ],
      "2022-09-20": [
        {"eventTitle": "ss", "eventDescp": "ss"}
      ]
    };
  }

I translate this using Future this what i try

Future<List<Event>> getData() async {
            var url = 'xxxxxxx';
            var res = await http.get(Uri.parse(url));
            var mySelectedEvents = json.decode(res.body);
            for (var event in mySelectedEvents) {
              for (var eventInfo in event) {
                print(eventInfo["descript"]);
                print(eventInfo["title"]);
              }
            }
            // print(destinations);
            return mySelectedEvents;
          }

and my model.dart

class Event {
  String date;
  String descript;
  String title;

  Event(
    this.date,
    this.descript,
    this.title,
  );
}

mySelectedEvents is not a List hence you can't iterate over it.

To parse it, you could use a forEach or map on mySelectedEvents as follows.

void main() {
  const mySelectedEvents = {
      "2022-09-13": [
        {"eventDescp": "11", "eventTitle": "111"},
        {"eventDescp": "22", "eventTitle": "22"}
      ],
      "2022-09-30": [
        {"eventDescp": "22", "eventTitle": "22"}
      ],
      "2022-09-20": [
        {"eventTitle": "ss", "eventDescp": "ss"}
      ]
    };
  
  mySelectedEvents.forEach((k, v) {
    print("key-date $k");
    for (var e in v) {
      print('desc ${e['eventDescp']}, desc ${e['eventTitle']}');
    }
  });
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM