Flutter多层嵌套列表过滤:按IndividualProduct的category筛选Order
嵌套列表过滤解决方案
假设你要匹配的目标分类值为targetCategory,可以通过嵌套调用where和any方法实现多层嵌套结构的过滤,代码简洁且避免手动循环容易出现的空值判断错误:
String targetCategory = "需要匹配的分类"; List<SingleOrder> filteredOrders = deliveredOrders.where((singleOrder) { // 检查当前订单是否包含符合条件的商品链 return singleOrder.orderProductList?.any((singleOrderProduct) { // 检查当前商品下是否有目标分类的个体商品 return singleOrderProduct.orderIndProductList?.any((indProduct) { return indProduct.category == targetCategory; }) ?? false; }) ?? false; }).toList();
关键说明:
where:遍历所有订单,仅保留满足条件的订单- 外层
any:判断订单的orderProductList中是否存在至少一个商品符合后续条件 - 内层
any:判断商品的orderIndProductList中是否存在至少一个个体商品的category匹配目标值 ?? false:处理列表为null的场景,避免空指针异常,同时确保空列表时返回false(即不满足过滤条件)
如果你的手动循环失效,常见原因包括:
- 未正确处理
null列表的情况 - 误用
every(要求所有项都满足)而非any(只要有一项满足即可) - 循环中未正确终止或标记符合条件的订单
若需支持多分类匹配,可修改内层判断逻辑:
List<String> targetCategories = ["分类1", "分类2"]; return targetCategories.contains(indProduct.category);
内容的提问来源于stack exchange,提问作者Isabelle
相关产品推荐
相关产品推荐

