当前位置: 首页 > 知识库问答 >
问题:

颤振错误:范围错误(索引):无效值:不在范围0...2,包括: 3

易宏阔
2023-03-14

我在颤振中使用了一个很长的列表。所有项目都呈现良好,但我也收到以下错误:

RangeError (index): Invalid value: Not in range 0..2, inclusive: 3

以下是我的代码:

@override
Widget build(BuildContext context) {
return Container(
  child: getList(),
 );
}

下面是我的getList()方法:

Widget getList (){
List<String> list = getListItems();
ListView myList = new ListView.builder(itemBuilder: (context, index){
  return new ListTile(
    title: new Text(list[index]),
  );
});
return myList;
}

下面是我的getListItem()方法:

List<String> getListItems(){
return ["Faizan", "Usman", "Naouman"];
}

以下是错误的屏幕截图:

共有3个答案

汪鸿波
2023-03-14

如果您正在使用StreamBuilder,那么您必须使用以下代码行:

  StreamBuilder(
                  stream: FirebaseFirestore.instance.collection("Tooth")
                  .orderBy("date", descending: false).snapshots() ,
                
                  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
                 
                    if(snapshot.hasData)
                    {
                      return ListView.builder(
                        itemCount: snapshot.data.docs.length,
                          padding: const EdgeInsets.only( top: 20.0),
                        itemBuilder: (BuildContext context, int index) {
                           DocumentSnapshot ds = snapshot.data.docs[index];
 },
                      );
                    }
                   
                  },
                ),
颛孙天宇
2023-03-14

当迭代数组时,值用完时,会出现此错误。在ListView组件缺少itemCount prop的情况下,组件试图继续迭代,但不知道何时完成,因此最终会继续超出范围(数组的长度)。

在为循环运行设置不良的后,您也可能会看到此错误。例如:

var arr = [1, 2, 3];

for (var i=0; i < 4; i++) {
    print(arr[i]);
}

此省道代码也会导致范围错误。数组有3项,但我们尝试迭代4次。

安轶
2023-03-14

您应该将itemCount参数传递给列表视图。生成器以允许其了解项目计数

Widget getList() {
  List<String> list = getListItems();
  ListView myList = new ListView.builder(
    itemCount: list.length,
    itemBuilder: (context, index) {
    return new ListTile(
      title: new Text(list[index]),
    );
  });
  return myList;
}
 类似资料:
  • 我在颤振中使用Swiper,错误发生在我在列表中添加4个元素时。 我引用了链接抖动错误:RangeError(索引):无效值:不在范围0内。。2,包含:3,但无法在Swiper中实现。

  • 大家好,我是flutter初学者,在练习刷卡解雇选项时,我已经完成了下面提到的代码,删除了一些产品后,我收到了下面的错误,我试图解决这个问题,但不能,请给我提供您的宝贵建议。 下面我附上了代码和错误供您参考。 ======== 由小部件库捕获的异常 ======================================================= 抛出了以下RangeError构建:R

  • 我一直在尝试在listview生成器的末尾添加一个按钮。我试着做这个问题中建议的事情:Flutter:如何在ListView的末尾添加一个按钮小部件。包含其他类型小部件的生成器?。但如果我这样做,我会得到:“RangeError(index):无效值:不在包含范围0..49:50中 我试图寻找问题,也有这个问题,但我找不到一个答案,解决它。

  • 在com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)在com.microsoft.sqlserver.jdbc.SQLServerPrearedStatement.setterGetParam(SQLServerPrearedStatement.java:9

  • 在这个应用程序中,我试图获得基于听事件的查询。如果数据库中有任何变化,移动屏幕中的数据将发生变化。下面是从数据库获取数据的代码。 我使用Gridview构建器显示数据。 我在上面代码的第9行中遇到错误。 即使quizStart()中的条件有效,我也会得到范围错误。 有人能帮我解决这个问题吗?

  • 试图用Gradle编译一个Android项目,却出现了一个奇怪的错误。当我运行。尝试了清洁重建,新鲜克隆的repo,不同的分支,同事都能建立AOK。 寻找事物的想法来检查/试图解决这个问题。 *更新:恢复到Gradle 2.11和似乎已经解决了这个问题。* Groovy:2.4.4 Ant:Apache Ant(TM)版本1.9.6编译于2015年6月29日JVM:1.8.0_101(Oracle