Is there any way to iterate over future<list> in flutter

Issue

I would like to iterate over the the Future<list> but get errors if I try using for loops or if I try setting it as List.

Is there any other way of looping over each element in the list:

Future<List> getDailyTask(DateTime date) async {
  var params = {'date': date.toIso8601String()};
  Uri uri = Uri.parse('URL');
  final newURI = uri.replace(queryParameters: params);
  http.Response response = await http.get(
    newURI,
    headers: {"Accept": "application/json"},
  );

  List foo = json.decode(response.body);
  return foo;
}

Solution

You can’t iterate directly on future but you can wait for the future to complete and then iterate on the List.

You can use either of these methods, depending upon your use-case.

List dailyTaskList = await getDailyTask(DateTime.now());
// Now you can iterate on this list.
for (var task in dailyTaskList) {
  // do something
}

or

getDailyTask(DateTime.now()).then((dailyTaskList) {
  for (var task in dailyTaskList) {
    // do something
  }
});

Answered By – Zeeshan Hussain

Answer Checked By – David Marino (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *