Flutter中ListView.builder如何实现列表内容无限重复滚动?
实现ListView无限重复滚动原有内容
直接通过索引取模和无限条目数的组合就能实现,不需要手动添加重复数据,具体修改如下:
- 将
itemCount设置为double.infinity,让ListView支持无限滚动 - 在
itemBuilder中用index % 50获取循环索引,复用原有50条内容的逻辑
修改后的完整代码:
ListView.builder( controller: controller, itemCount: double.infinity, itemBuilder: (BuildContext context, int index) { // 取模运算让索引在0-49之间循环 final loopIndex = index % 50; // 可保留原文本,也可添加loopIndex区分条目 return Text('hello world ${loopIndex + 1}'); }, )
原理说明:
double.infinity告诉ListView可以无限生成条目,支持持续滚动index % 50会把不断递增的索引映射回0到49的范围,相当于循环复用原有50条内容的布局逻辑,完全不需要额外复制数据
如果你的原有50条内容是动态列表数据,同样适用:
// 假设你有原始数据列表 final originalList = List.generate(50, (i) => 'Item ${i+1}'); ListView.builder( controller: controller, itemCount: double.infinity, itemBuilder: (BuildContext context, int index) { final loopIndex = index % originalList.length; return Text(originalList[loopIndex]); }, )
内容的提问来源于stack exchange,提问作者Mohammed Hamdan
相关产品推荐
相关产品推荐

