我想将数据从_list添加到另一个名为NS200的列表中。该列表包含这样的数据。
List<Posts> _list = [
{id: "0",
name: "assa ",},
{id: "1",
name: "NS200",}];.
我尝试使用are,但无法正常工作。
看这段代码:
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
返回一个可迭代对象,需要在使用列表时将其转换回列表。另外,您存储的数据不正确。列表类型为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}');
}