Flutter itemBulder跳转到下一个项目
我是一个新手程序员 在Flutter itemBulder跳转到下一个项目,flutter,dart,Flutter,Dart,我是一个新手程序员 在itemsbuilder中,如何跳转到下一个索引项 return ListView.builder( itemCount: s.data.length, itemBuilder: (_, index){ if(s.data[index]["count"].toString() == "0") return new Text(''); image1 = s.data[index]["imag
itemsbuilder
中,如何跳转到下一个索引项
return ListView.builder(
itemCount: s.data.length,
itemBuilder: (_, index){
if(s.data[index]["count"].toString() == "0") return new Text('');
image1 = s.data[index]["image"];
if(image1 == null){
image2 = imageSrc;
}else{
image2 = s.data[index]["image"]["src"];
print(s.data[index]);
}
我曾经
if(s.data[index]["count"].toString() == "0") return new Text('');
但是,项目之间的空间已创建。我假设您想跳过某些项目。如果您使用的是Dart 2.3+,则可以使用
collection If
或collection for
来执行此操作。但是,在您的用例中,最简单的方法是将Text(“”)
替换为const SizedBox()
。小部件树中将有一个小部件,但高度/宽度为0时,它不会显示在屏幕上并占用任何空间,并且作为const
小部件,它不应重建。假设我理解正确,您希望跳过count
为零的项目的构建
保留该代码可以返回一个SizedBox.shrink()
,而不是Text(“”)
,后者是一个零大小的容器
更好的方法是过滤s.data
,并在ListView.builder
中使用它:
List<?> filteredData = s.data.where((item) => item["count"].toString() != 0).toList();
然后将ListView.builder中的s.data
替换为filteredData
,尝试返回一个不占用任何空间的or
if(s.data[index]["count"].toString() == "0") return Container(width: 0,height: 0,);
if(s.data[index]["count"].toString() == "0") return Container(width: 0,height: 0,);