Получить записи с карты на основе одного из ключевых значений - PullRequest
0 голосов
/ 10 февраля 2020

Я просмотрел похожие посты, но до сих пор не могу выровнять вещи с тем, что мне нужно.

Я хочу получить все записи со следующей карты, где выполняется условие определенного условия.

Простая карта

List<Map<String, dynamic>> _playList = [
    {'songId': 1, 'setId': 1},
    {'songId': 2, 'setId': 1},
    {'songId': 3, 'setId': 1},
    {'songId': 4, 'setId': 2},
    {'songId': 5, 'setId': 3},
    {'songId': 6, 'setId': 4},
    {'songId': 6, 'setId': 5},
    {'songId': 6, 'setId': 6},
    {'songId': 6, 'setId': 7},
  ];

Я пытаюсь использовать метод, который будет перебирать эту карту, находить все записи для целого числа, переданного в метод, и затем сохранять результаты в новом массив.

Метод, который у меня пока есть

Future<List<Song>> songFromCurrentSetlist (int setlistId) async {
    _playList.forEach((_) => setlistId == _playList.???);
  }

Ясно, что немного застрял.

В основном, если 1 получено для setlistId в списке параметров для метода Я ожидаю получить значения 1,2,3 для каждого из songId, которые существуют для setlistId == 1.

Спасибо, Боб

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Вы можете создать список песен и добавить новые песни, когда ваш setId совпадает.

Следующий пример Очистите вашу идею.

void main(){ 
List<Map<String, dynamic>> _playList = [
    {'songId': 1, 'setId': 1},
    {'songId': 2, 'setId': 1},
    {'songId': 3, 'setId': 1},
    {'songId': 4, 'setId': 2},
    {'songId': 5, 'setId': 3},
    {'songId': 6, 'setId': 4},
    {'songId': 6, 'setId': 5},
    {'songId': 6, 'setId': 6},
    {'songId': 6, 'setId': 7},
  ];

  List<int> songs = [];
   songFromCurrentSetlist (int setlistId) async {
     _playList.forEach((index){
       if(index['setId'] == setlistId){
         songs.add(index['songId']);
       }
    });
  }

  songFromCurrentSetlist(1);

  print(songs.toList());
}
0 голосов
/ 10 февраля 2020

Вместо карты, почему вы не используете класс модели Exp:

class Songs{
final int songId;
final int setId;
Songs(this.songId, this.setId);}
ListSongs> _playList

попробуйте использовать это

...