条件ListView.builder

时间:2020-04-01 17:53:16

标签: listview flutter builder

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'创建条件ListView.builder。 'isParliamentary'值为'false'的对象根本不会显示。我需要其他语句吗?

2 个答案:

答案 0 :(得分:0)

我也有相同的中断 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;
       }
)

我已经尝试过这种解决方案,它可以正常工作,不会出现任何错误。

答案 1 :(得分:0)

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