flutter - 颤动的 ListView.builder 有时会显示空白或空数据
问题描述
我有Products
10 个不同类别的 250 个列表。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 产品是Product
列表的 0-25 索引。下面是我的 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();
}
},
);
我该如何解决这个问题。提前致谢。
解决方案
仅当其类别 id 与所选类别 id 匹配时才返回列表项
ListView.builder(
itemCount: widget.products.length,
itemBuilder: (BuildContext _, int index) {
var categoryId = widget.products[index].categoryId;
return selectedCategory == categoryId ?:Container();
SingleProduct(
productId: widget.products[index].productId,
productName: widget.products[index].nameBn,
productCategory: widget.products[index].categoryId,
cartProductQty: cartProductQty,
):Container();
},
);
推荐阅读
- reactjs - 通过 PUT 方法(节点)将字符串数组发送到正文中的特定字段
- reactjs - React Native, passing function with argument from child to parent
- haskell - 当我尝试使用 ghci 加载此 Haskell 代码时,为什么会出现错误?
- c - 如何使用 *x 显示 Hello World
- c# - 出队方法 C#
- javascript - Puppeteer 中的嵌套选择器
- firebase - FCM 发送到 vs 主题 vs 添加条件
- node.js - 如何在茉莉花中测试包装在 setImmediate 中的调用
- javascript - 检索 JSON api 数据时出错:Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
- apache-spark - 在 Databricks 中创建 SQL 用户