Conditional ListView.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文件中创建一个带有布尔语句"isParliament"的条件ListView.builder。"isParliament"值为"false"的对象根本不会显示。我还需要其他声明吗?

我通过返回SizedBox(高度:0(来实现这一点;当我尝试只返回null时,一旦触发null并且列表停止,我的索引就会停止。

我对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;
}
)

我尝试过这个解决方案,它运行良好,没有出现任何错误。

相关内容

  • 没有找到相关文章

最新更新