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}');
}
我想将数据从 _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}');
}