【发布时间】:2021-02-04 06:25:40
【问题描述】:
我有 10 个不同类别的 250 个 Products 列表。 Product 结构如下
class Product {
final int productId;
final int categoryId;
final String nameEn;
final String descriptionEn;
Product(
{this.productId,
this.categoryId,
this.nameEn,
this.descriptionEn
});
}
根据所选类别,我喜欢使用ListView.builder 显示产品列表。它在任何选定类别的开头显示正确的Product 列表。使用一段时间后,如果我选择类别 3 或类别 1,它会显示空列表。然后我 debugPrint 找出哪里出错了。除了 index 的 itemBuilder: (BuildContext _, int index) 值之外,一切看起来都很好。它不是从 0 迭代,而是从 15 或 20 或 50 或有时 120 迭代。如果index 在我选择类别 1 时从 30 开始,那么我会得到空列表,因为类别 1 产品是 0-25 的索引Product 列表。
下面是我的 listView.builder
ListView.builder(
itemCount: widget.products.length,
itemBuilder: (BuildContext _, int index) {
debugPrint('index is = $index');
var categoryId = widget.products[index].categoryId;
if (categoryId == selectedCategory) {
int cartProductQty = 0;
for (int i = 0; i < widget.cartProducts.length; i++) {
if (widget.products[index].productId ==
widget.cartProducts[i].cartProductId) {
cartProductQty = widget.cartProducts[i].cartProductQty;
}
}
return SingleProduct(
productId: widget.products[index].productId,
productName: widget.products[index].nameBn,
productCategory: widget.products[index].categoryId,
cartProductQty: cartProductQty,
);
} else {
return DoNothing();
}
},
);
我该如何解决这个问题。提前致谢。
【问题讨论】: