簡體   English   中英

flutter ListView.builder 有時會顯示空白或空數據

[英]flutter ListView.builder is showing blank or empty data sometimes

我有 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 找出哪里出錯了。 除了itemBuilder: (BuildContext _, int index) index外,一切看起來都很好itemBuilder: (BuildContext _, int index)值。 它不會從 0 開始迭代,而是從 15 或 20 或 50 或有時 120 開始迭代。如果當我選擇類別 1 時index從 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(); }, );

終於解決了。

我沒有將所有項目發送到ListView.builder ,而是發送了類別與所選類別匹配的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM