Флаттер, добавляющий данные списка в другой список с указанным именем c - PullRequest
0 голосов
/ 26 апреля 2020

Я хочу добавить данные из _list в другой список с именем NS200. Список содержит такие данные.

List<Posts> _list = [
{id: "0",
name: "assa ",},
{id: "1",
name: "NS200",}];.

Я пытался использовать, но это не работает.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

where возвращает итерацию, которую необходимо преобразовать обратно в список при использовании списка. Кроме того, вы храните данные неправильно. Тип списка Posts, поэтому вы должны хранить сообщения в списке, а не на карте или в списке карт. См. Следующий код:

class Posts {
  String id;
  String name;

  Posts({this.id, this.name});
}

void main() {

  List<Posts> _items = [
    Posts(
      id: "1",
      name: "NS200",
    ),
    Posts(
      id: "2",
      name: "assa",
    ),
    Posts(
      id: "3",
      name: "NS200",
    ),
  ];

  List<Posts> _newList = [];

  _newList = _items.where((item) => item.name == "NS200").toList();

  for (var item in _newList) {
    print('${item.id} - ${item.name}');
  }
}

С помощью where вы можете проверить, совпадает ли строка, которую вы хотите проверить, с именем каждого элемента списка. Если он совпадает, он вернет true, иначе false. Затем вы можете преобразовать его в список, используя toList().

. Вы можете обернуть фильтр logi c в функцию, чтобы вызывать его в любое время.

List<Posts> _newList = [];

void filterList() {
 _newList = _items.where((item) => item.name == "NS200").toList(); 
}

filterList();

for (var item in _newList) {
  print('${item.id} - ${item.name}');
}
0 голосов
/ 26 апреля 2020

Посмотрите на этот код:

List list = [
  {'id': '0', 'name': 'assa '},
  {'id': '1', 'name': 'NS200'}
];
final copiedList = list.where((item) => item['name'] == 'NS200');
print(copiedList);

Результат: ({id: 1, name: NS200})

...