无法在颤动中过滤 listview.builder 的列表
Posted
技术标签:
【中文标题】无法在颤动中过滤 listview.builder 的列表【英文标题】:Not able to filter the list for listview.builder in flutter 【发布时间】:2021-01-01 05:22:05 【问题描述】:我在使用where
执行以下调用时尝试过滤 JSON 数据,但出现错误
List filterproducts=[];
filterproducts.addAll(widget.bomdatareceived[0]['bom_items'][0]['proc_code'].where((element) => element.contains(widget.processCode)).toList());
错误
Class 'String' has no instance method 'where'.
Receiver: "61"
Tried calling: where(Closure: (dynamic) => dynamic)
widget.proc_code
是 61
,例如来自以下 JSON 数据
JSON 数据
"bom_items": [
"proc_code": "61",
"name": "SPINNING",
"bom_catalog_item": "327",
,
"proc_code": "61",
"name": "SPINNING",
"bom_catalog_item": "390",
,
"proc_code": "65",
"name": "DYING",
"bom_catalog_item": "1056",
]
上面的 JSON 数据在列表中,我想在这个 ListView.builder 中实现过滤器之类的东西,只列出那些具有相同 proc_code 的元素,我没有在屏幕上实现任何搜索栏之类的东西.我正在从上一个屏幕接收 proc_code 的值,并希望构建具有相同 proc_code 的列表。
请指导我如何解决此问题。
【问题讨论】:
【参考方案1】:您需要执行以下操作:
void main()
final recievedItems =
"bom_items": [
"proc_code": "61",
"name": "SPINNING",
"bom_catalog_item": "327",
,
"proc_code": "61",
"name": "SPINNING",
"bom_catalog_item": "390",
,
"proc_code": "65",
"name": "DYING",
"bom_catalog_item": "1056",
],
;
List filterproducts=[];
filterproducts.addAll(recievedItems['bom_items'].where((element) => element.containsValue("61")).toList());
print(filterproducts);
这将返回包含proc_code : 61
的项目:
[proc_code: 61, name: SPINNING, bom_catalog_item: 327, proc_code: 61, name: SPINNING, bom_catalog_item: 390]
https://dartpad.dev/6e5efe3339d6ca62e2f42c557dfda012
【讨论】:
以上是关于无法在颤动中过滤 listview.builder 的列表的主要内容,如果未能解决你的问题,请参考以下文章
如何在颤动中使我的文本与 listview.builder 一起滚动
如何在颤动中为 listview.builder 制作列表视图?
如果数据发生变化,颤动如何更新 Listview.builder
在颤动的 ListView.builder 中,我得到了 Null 值