Flutter 将列表数据添加到另一个具有特定名称的列表中

Flutter adding list data into another list with specific name

我想将数据从 _list 添加到名称为 NS200 的另一个列表中。该列表包含这样的数据。

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

我尝试使用 were 但它不起作用。

看看这段代码:

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

结果是: ({id: 1, name: NS200})

where returns 是一个可迭代对象,在您使用列表时需要将其转换回列表。另外,您存储的数据不正确。列表类型是 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,您可以检查要检查的字符串是否与每个列表项的名称匹配。如果匹配,它将 return 为真,否则为假。然后您可以使用 toList().

将其转换为列表

您可以将过滤器逻辑包装在一个函数中,这样您就可以随时调用它。

List<Posts> _newList = [];

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

filterList();

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