You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter ListView嵌套PageView加载媒体时出现RangeError下标越界问题

错误原因

你创建的lista_medios是二维列表结构,每次向里面添加元素时,都是插入长度固定为1的List<PostMedia>子列表,所以任意lista_medios[indice]的合法下标只有0。
但你访问资源时用了lista_medios[indice][indexPost],indexPost是外层列表的帖子序号,第2条帖子对应的indexPost就是1,超过了子列表的最大合法下标0,直接触发了下标越界错误。

修复方案

快速修复

直接把出错行的indexPost替换为0即可,修改后代码如下:

NetworkImage(lista_medios[indice][0].media_url),

优化建议

你当前的lista_medios二维结构没有实际作用,直接改成一维List<PostMedia>可以简化逻辑,避免后续再出现同类下标错误:

  1. 把lista_medios的定义修改为:
List<PostMedia> lista_medios = [];
  1. 所有添加元素的逻辑,直接插入PostMedia对象,不需要再包一层列表,比如原来的:
List<PostMedia> lista1 = [
  PostMedia(
      media_url: foto1,
      es_foto: true,
      es_video: false,
      es_youtube: false)
];
lista_medios.add(lista1);

改为:

lista_medios.add(PostMedia(
  media_url: foto1,
  es_foto: true,
  es_video: false,
  es_youtube: false
));
  1. 最后访问资源的代码简化为:
NetworkImage(lista_medios[indice].media_url),

PageView.builder的itemCount还是使用lista_medios.length即可,不需要额外修改。

内容的提问来源于stack exchange,提问作者mvasco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:45:04