说明如何按字符串筛选数组



我有一个像这样的简单数组

[{ID: 1195, SubCategoryID: 87, Name: Fajita Pizza (S)}, {ID: 1192, SubCategoryID: 87, Name: Fajita Pizza (S)}, {ID: 1191, SubCategoryID: 87, Name: Fajita Pizza (S)}]

我有一个简单的ID1195,像这样

现在我需要过滤ID为1195的数组

我尝试这样做

var filterData =  searchArray.searchArrayData.where((i) => i.ID == snapshot.data[i].ID).toList();

显示错误Class '_InternalLinkedHashMap<String, dynamic>' has no instance getter 'ID'.

也试试这样

var filterData =  searchArray.searchArrayData.where((i) => i['ID'] == snapshot.data[i].ID).toList();

显示type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'int'

试试这个:

List<Map<String, dynamic>> items = [
{ID: 1195, SubCategoryID: 87, Name: Fajita Pizza (S)},
{ID: 1192, SubCategoryID: 87, Name: Fajita Pizza (S)},
{ID: 1191, SubCategoryID: 87, Name: Fajita Pizza (S)}
];
var filterData = items.where((element) => element["ID"] == 1195);

问题是您如何使用snapshot.data[i].ID:您正在传递数组的索引(应该是int)映射(i)。如果你澄清了什么快照。数据正在返回,我可以建议你一个正确的方法。

最新更新