RangeError(索引):无效值:不在0..7范围内,包括8

时间:2020-03-24 22:07:42

标签: json listview flutter dart flutter-layout

我正尝试显示从API请求中检索到的所有值。

这是当前显示的内容:

Text

我正在使用页面的列表视图生成器。可以从以下链接中检索JSON:Here

这是我的整个页面代码:Code

2 个答案:

答案 0 :(得分:1)

您已通过_ListFamilyPageState.data.body.family.length设置了ListView的itemCount属性,并将其构建器的索引与另一个列表data.body.friends [index] .id.toString()一起使用

我不认为两者具有相同数量的元素

答案 1 :(得分:1)

该错误在您的ListViewBuilder中:

ListView.builder(
  scrollDirection: Axis.vertical,
  shrinkWrap: true,
  itemCount: _ListFamilyPageState.data.body.family.length,
  itemBuilder: (context, index) {
    return Container(
        height: 74.0,
        decoration: BoxDecoration(
          color: Colors.white,
          borderRadius: BorderRadius.only(
              topRight: const Radius.circular(20.0),
              bottomRight: const Radius.circular(20.0)),
        ),
        width: MediaQuery.of(context).size.width - 50.0,
        child: Center(
            child: Text(
              data.body.friends[index].id.toString(),
              style:
              TextStyle(fontSize: 24.0),
            )));
  },
)

您指定了family.length个项目(数据中为15个), 但是您正在从friends[index]中提取实际数据(数据中有8项)。

当在索引8处渲染项目时,这会产生RangeError。

最重要的是:您在状态下使用静态数据:

class _ListFamilyPageState extends State<ListFamily> {
  static Relations data;
  // ...
}

不要那样做。