首页 > 解决方案 > 如何在颤动中过滤列表?

问题描述

我正在尝试将过滤器添加到我的list

这就是我所做的

productTemp.sort((a, b) => b.productPrice.compareTo(a.productPrice));
        productTemp = productTemp.where((x) =>
            x.productName.toLowerCase().contains(inputText.toLowerCase()));
        productTemp = productTemp.toSet().toList();

这是我如何设置的

List<ProductsModel> productTemp = [];

那么这个

class ProductsModel {
  final String productId;
  final String productName;
  final String isNew;
  final String isHot;
  final String productImage;
  final String categoryId;
  final String productPrice;
  final String productDescription;

  ProductsModel(
      {this.productId,
      this.productName,
      this.isNew,
      this.isHot,
      this.productImage,
      this.categoryId,
      this.productPrice,
      this.productDescription});

  factory ProductsModel.fromJson(Map<String, dynamic> json) {
    return ProductsModel(
      productId: json['productId'] as String,
      productName: json['productName'] as String,
      isNew: json['isNew'] as String,
      isHot: json['isHot'] as String,
      productImage: json['productImage'] as String,
      categoryId: json['categoryId'] as String,
      productPrice: json['productPrice'] as String,
      productDescription: json['productDescription'] as String,
    );
  }

  bool operator ==(o) =>
      o is ProductsModel && productId == o.productId;

  int get hashCode => productId.hashCode;
}

所以我得到这个错误

[错误:flutter/lib/ui/ui_dart_state.cc(148)] 未处理的异常:类型“WhereIterable”不是“列表”类型的子类型

我该如何解决?提前致谢

标签: flutterdart

解决方案


productTemp是类型Listwhere返回Iterable。您需要将 的输出where转换为List.

productTemp.where(
  (x) => x.productName.toLowerCase().contains(inputText.toLowerCase())
).toList();

推荐阅读