Collectives™ on Stack Overflow
  
  
   Find centralized, trusted content and collaborate around the technologies you use most.
  
  Learn more about Collectives
  
   
    Teams
   
  
  
   Q&A for work
  
  
   Connect and share knowledge within a single location that is structured and easy to search.
  
  Learn more about Teams
  
  Ask Question
  
   I have the below function to take List data from API call and populate pop-up metadata with the first 5 instances of key/value pairs.
  
     var mappedList = boards.boards!.take(5).toList(); 
   // now, from the list above, I map each result into a key-value pair
    var mappedValues = mappedList.map((m) => { 'headsign': m.getString('headsign'), 'time': m.getString('time') });
   // this list will look like:
   // [{ headsign: 'value1', title: 'title1'}, { headsign: 'value2', title: 'value2' }]
   // Now moving mappedValues list to showDialog
   String title = ("Title Test");
   _DropDownList(mappedValues, title);
  Future<void> _DropDownList(List<Map<String, dynamic>> values, String title) async {
         var test1 = ListBody(
I receive the error
    The argument type 'Iterable<Map<String, dynamic>>' can't be assigned to the parameter type 'List<Map<String, dynamic>>'
on the line
     _DropDownList(mappedValues, title); //(on 'mappedValues')
This error links to
   var mappedValues = mappedList.map((m) =>
And the error is with the map section of the function. I have tried casting as etc but can't get it to work or go through as a List<Map<String, dynamic>>
Thanks
Update
If I change to iterable like so I get the error The operator '[]' isn't defined for the type 'Iterable<Map<String, dynamic>>'. on [index] where highlighted below
Future<void> _DropDownList(Iterable<Map<String, dynamic>> values, String title) async {
         var test1 = ListBody(
              children: List.generate(
                values.length, (index) {
   *[index]*                return Text(values[index]['headsign']);
Thanks
                
– 
                
You can easily change an Iterable to a list by calling toList() so just change
var mappedValues = mappedList.map((m) => { 'headsign': m.getString('headsign'), 'time': m.getString('time') });
var mappedValues = mappedList.map((m) => { 'headsign': m.getString('headsign'), 'time': m.getString('time') }).toList();
        Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
 
But avoid …
- Asking for help, clarification, or responding to other answers.
 - Making statements based on opinion; back them up with references or personal experience.
 
To learn more, see our tips on writing great answers.