首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在颤振中使用shimmer时如何在listview中显示空状态

在颤振中使用shimmer时如何在listview中显示空状态
EN

Stack Overflow用户
提问于 2022-03-30 10:53:56
回答 2查看 247关注 0票数 0

我有一个列表视图,它从api服务中获取。如果有data,我需要显示一个shimmer,直到api响应来显示listview,如果没有数据,则显示一个空状态消息。请检查我下面的代码,我已经实现了。shimmer和list item视图工作得很好,但是如果列表是空的,我的空状态视图就不会显示..。它显示为空白视图。

代码语言:javascript
复制
productListWidget() {
return Expanded(
        child: ListView.builder(

            itemCount: isLoading? 5 : searchedProductList.length,
            padding: EdgeInsets.only(left: 8, right: 8, top: 8, bottom: 8),
            scrollDirection: Axis.vertical,
            shrinkWrap: true,
            itemBuilder: (context, index) {
              if(isLoading){
                return productItemShimmer();
              }else {
                print(isEmptyList);
                return isEmptyList?  pItemEmpty() :productItem(searchedUnitList[index], index) ;
              }
            },

            ));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-30 11:30:14

当list为空时,searchedProductList.length返回0。你能做到的

代码语言:javascript
复制
Expanded(
  child: ListView.builder(
    itemCount: isLoading
        ? 5
        : searchedProductList.isEmpty
            ? 1
            : searchedProductList.length,
    itemBuilder: (context, index) {
      if (isLoading) {
        return Text("shimmer widget hereF");
      } else {
        print(searchedProductList.length);
        return searchedProductList.isEmpty
            ? Text("Empty")
            : Text("product Item $index");
      }
    },
  ),

这将在list为空时返回单个小部件。

票数 1
EN

Stack Overflow用户

发布于 2022-03-30 11:28:06

如果列表为空,则ListView构建器将不会生成任何子构建。您应该将空测试从列表构建器中移出:

代码语言:javascript
复制
return Expanded(
        child: isEmptyList ? pItemEmpty() : ListView.builder(

            itemCount: isLoading? 5 : searchedProductList.length,
            padding: EdgeInsets.only(left: 8, right: 8, top: 8, bottom: 8),
            scrollDirection: Axis.vertical,
            shrinkWrap: true,
            itemBuilder: (context, index) {
              if(isLoading){
                return productItemShimmer();
              }else {
                return productItem(searchedUnitList[index], index) ;
              }
            },

            ));

此外,要根据操作的状态显示不同的小部件,我建议使用FutureBuilderhttps://api.flutter.dev/flutter/widgets/FutureBuilder-class.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71675921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档