在颤振中添加if条件后,列表视图卡不起作用

Posted

技术标签:

【中文标题】在颤振中添加if条件后,列表视图卡不起作用【英文标题】:List view cards doesn't work after adding if condition inside in flutter 【发布时间】:2020-11-21 21:51:45 【问题描述】:

我的列表视图卡没有返回特定用户存储的所有项目,我想获取用户存储的所有产品

 body: (products != null)
        ? ListView.builder(
            itemCount: products.length,
            itemBuilder: (context, index) 
              if (products[index].ownerId == user.uid) 
                return Card(
                  child: ListTile(
                    leading: Image.asset('graphics/broccoli.png'),
                    title: Text(products[index].name),
                    subtitle:
                        Text(products[index].price.toString() + " Rs"),
                    trailing: Icon(Icons.more_vert),
                  ),
                );
               else 
                return null;
              
            )
        : Center(child: CircularProgressIndicator()));

【问题讨论】:

能否提供问题中products函数的代码? 【参考方案1】:

else 部分,返回SizedBox() 而不是null

 else 
  return const SizedBox();

这是因为任何小部件的构建方法或构建器函数必须始终返回Widget,而null 不是Widget

所以每当我们想要显示“无”或“空小部件”时,我们可以简单地返回一个SizedBox()

【讨论】:

【参考方案2】:

既然Jigar's answer 很贴切,我想给你一些精确的方法来做到这一点。

你也可以返回Container(),它基本上是用来显示空容器的。 您可以只按照您的第一种技术,即使用ternary operator 来返回CardContainer,而不是使用检查返回

你可以这样做:

               return (products[index].ownerId == user.uid) ? Card(
                  child: ListTile(
                    leading: Image.asset('graphics/broccoli.png'),
                    title: Text(products[index].name),
                    subtitle:
                        Text(products[index].price.toString() + " Rs"),
                    trailing: Icon(Icons.more_vert)
                  )
                ) : Container();

【讨论】:

尺寸框总是更好的选择,它有专门设计的高度和宽度,容器还有很多其他参数。 是的@jitsm555 我同意,但是只声明Container() 就像没有heightwidthSizedBox() 一样工作得很好。无论如何,感谢您的建议。每次遇到这种情况我都在使用Container(),但肯定会尝试一下

以上是关于在颤振中添加if条件后,列表视图卡不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥在条件格式公式中引用另一个 Google 表格选项卡不起作用?

PyQt5,将文本添加到选项卡不起作用

反应本机列表视图添加项目不起作用

Native Android App中的颤振,后按不起作用

首次单击后引导程序 4 显示选项卡不起作用

颤振:图像 BoxFit.cover 在堆栈中不起作用