Flutter Carousel Slider列表迭代异常:动态列表仅遍历一次
解决Flutter Carousel Slider无法遍历列表的问题
嘿,我一眼就瞅出你代码里的问题啦!你现在的写法里,把itemss整个塞进了一个新数组[itemss],这就导致map方法只处理这一个元素(也就是整个图片列表),自然只会生成一个滑块,没法遍历所有图片~
第一步:修正核心问题
只需要把items: [ itemss ]改成items: itemss就行,这样map就会遍历itemss里的每一个图片链接了:
var itemss = []; for (var e = 0; e < model.listFireforce.length; e++) { itemss.add(model.listFireforce[e].image); } return CarouselSlider( height: 350.0, // 这里去掉外层的[],直接用itemss items: itemss.map((i) { return Builder( builder: (BuildContext context) { return Container( width: MediaQuery.of(context).size.width, margin: EdgeInsets.symmetric(horizontal: 2.0), decoration: BoxDecoration(color: Colors.white), child: Image.network(i, fit: BoxFit.cover,)); }, ); }).toList());
第二步:优化代码(更简洁的写法)
其实你完全不用额外创建itemss列表,直接遍历model.listFireforce就能生成滑块,代码更清爽:
return CarouselSlider( height: 350.0, // 直接遍历model里的列表,取出每个元素的image字段 items: model.listFireforce.map((fireforceItem) { return Builder( builder: (BuildContext context) { return Container( width: MediaQuery.of(context).size.width, margin: EdgeInsets.symmetric(horizontal: 2.0), decoration: BoxDecoration(color: Colors.white), child: Image.network(fireforceItem.image, fit: BoxFit.cover,)); }, ); }).toList());
这样改完,Carousel Slider就能正常遍历所有图片,自动根据model.listFireforce的更新来同步滑块内容啦~
内容的提问来源于stack exchange,提问作者R. Martinez
相关产品推荐
相关产品推荐

