条件 ListView.builder

Posted

技术标签:

【中文标题】条件 ListView.builder【英文标题】:Conditional ListView.builder 【发布时间】:2020-07-13 13:51:21 【问题描述】:
return ListView.builder(
                        itemCount: snapshot.data.length,
                        itemBuilder: (BuildContext context, int index) 
                          final bool alreadySaved =
                              _saved.contains(snapshot.data[index]);
                          if (!snapshot.data[index].isParliamentary) 
                            return ListTile(
                              title: Text(snapshot.data[index].name,
                                  style: TextStyle(
                                    fontSize: 20.0,
                                    fontWeight: FontWeight.bold,
                                  )),
                              trailing: Icon(
                                alreadySaved
                                    ? Icons.favorite
                                    : Icons.favorite_border,
                                color: alreadySaved ? Colors.red : null,
                              ),
                              onTap: () 
                                setState(() 
                                  if (alreadySaved) 
                                    _saved.remove(snapshot.data[index]);
                                    print(_saved);
                                   else 
                                    _saved.add(snapshot.data[index]);
                                    print(_saved);
                                  
                                );
                              ,
                            );
                          
                        );

尝试在我的 JSON 文件中使用布尔语句“isParliamentary”创建。 'isParliamentary' 值为 'false' 的对象根本不显示。我需要 else 语句吗?

【问题讨论】:

您正在检查 isParliamentary 并返回一个列表图块,当该值为 false 时,您没有指定屏幕上应该显示的内容。那你期待看到什么? 我希望它跳过对 isParliamentary 具有 true 的对象。我怎样才能只为这些对象返回任何内容? 为什么不在创建 listview 之前过滤掉那些对象?如果您不想显示任何内容,请返回一个空容器。但我建议你在构建列表视图之前过滤掉那些不需要的对象。 这能回答你的问题吗? How to conditionally add widgets to a list? 【参考方案1】:

break ListView.builder 也有同样的问题,但我没有得到任何合适的解决方案,我尝试使用下面的代码来处理条件 ListView

ListView.builder(
    itemCount: snapshot.data.length,
    itemBuilder: (BuildContext context, int index) 
       final bool alreadySaved = _saved.contains(snapshot.data[index]);
       if (!snapshot.data[index].isParliamentary) 
           // Return Widget for this condition, 
       
       else
          // Return else widget
          // if you don't have else widget the return null like below
          // return null;
       
)

我已经尝试过这个解决方案,它工作正常,没有出现任何错误。

【讨论】:

【参考方案2】:

我通过返回一个 SizedBox(height: 0);当我尝试只返回 null 时,一旦触发 null 并且列表停止,我的索引就会停止。

【讨论】:

以上是关于条件 ListView.builder的主要内容,如果未能解决你的问题,请参考以下文章

区分充分条件必要条件和充分性必要性

makefile条件判断语句

关于SQL多条件查询问题: 若其中一条件为空值如何设置忽略该条件而用其它条件组合查询??

JavaScript条件语句

Python中SQL语句当查询多个条件,如果条件为空,则不加入查询条件;如果条件不为空,则加入查询条件

if函数多个条件怎么用 if函数多个条件如何使用啊