如何在颤振中过滤列表?

Bob*_*oby 7 dart flutter

我正在尝试向我的 list

这是我所做的

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

在这里我是如何设置的

List<ProductsModel> productTemp = [];
Run Code Online (Sandbox Code Playgroud)

那么这个

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;
}
Run Code Online (Sandbox Code Playgroud)

所以我收到这个错误

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

我该如何解决?提前致谢

Mar*_*yns 14

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

productTemp.where(
  (x) => x.productName.toLowerCase().contains(inputText.toLowerCase())
).toList();
Run Code Online (Sandbox Code Playgroud)