You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:37:43