将列表数据添加到具有特定名称的另一个列表中时会颤抖

问题描述 投票:0回答:2

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

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

我尝试使用are,但无法正常工作。

flutter flutter-layout flutter-test
2个回答
0
投票

看这段代码:

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

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


0
投票

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()将其转换为列表。

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

List<Posts> _newList = [];

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

filterList();

for (var item in _newList) {
  print('${item.id} - ${item.name}');
}
© www.soinside.com 2019 - 2024. All rights reserved.