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

颤振:RangeError(索引):无效值:不在包含范围0中。。27: 28

况明贤
2023-03-14

大家好,我是flutter初学者,在练习刷卡解雇选项时,我已经完成了下面提到的代码,删除了一些产品后,我收到了下面的错误,我试图解决这个问题,但不能,请给我提供您的宝贵建议。

下面我附上了代码和错误供您参考。

======== 由小部件库捕获的异常 ======================================================= 抛出了以下RangeError构建:RangeError(index):无效值:不包括范围0...27:28

当抛出异常时,这是堆栈:#0 List.[](dart: core-patch/growable_array.dart:254: 60)#1 MyHome.build.(包: flutterswecpedisMIS/main.dart:34: 27)#2 SliverChildBuilderDelegate.build(包: flutter/src/小部件/<--_build(软件包:flutter/src/小部件/sliver.dart:1201: 28)#4 SliverMultiBoxAdaptorElement.create儿童。

主要的飞奔

  import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHome(),
    );
  }
}

class MyHome extends StatelessWidget {
  final List<String> items =
      List<String>.generate(30, (i) => "Product ${i + 1}");
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Delete panna sidela thallu"),
      ),
      body: ListView.builder(
        itemCount: items.length,
        itemBuilder: (context, int index) {
          return Dismissible(
            key: Key(items[index]),
            onDismissed: (direction) {
              items.removeAt(index);
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(
                  content: Text("Item Dismissed."),
                ),
              );
            },
            background: Container(
              color: Colors.red,
            ),
            child: ListTile(
              title: Text("${items[index]}"),
            ),
          );
        },
      ),
    );
  }
}

共有1个答案

公德明
2023-03-14

我不能理解问题的原因,但我能够解决它通过转换MyHome小部件到StatefulWidget,并调用setState删除项目。

这是新的代码:

class MyHome extends StatefulWidget {
  @override
  _MyHomeState createState() => _MyHomeState();
}

class _MyHomeState extends State<MyHome> {
  final List<String> items =
      List<String>.generate(30, (i) => "Product ${i + 1}");
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Delete panna sidela thallu"),
      ),
      body: ListView.builder(
        itemCount: items.length,
        itemBuilder: (context, int index) {
          return Dismissible(
            key: Key(items[index]),
            onDismissed: (direction) {
              setState(() {
                items.removeAt(index);
              });
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(
                  content: Text("Item Dismissed."),
                ),
              );
            },
            background: Container(
              color: Colors.red,
            ),
            child: ListTile(
              title: Text("${items[index]}"),
            ),
          );
        },
      ),
    );
  }
}
 类似资料:
  • 我一直在尝试在listview生成器的末尾添加一个按钮。我试着做这个问题中建议的事情:Flutter:如何在ListView的末尾添加一个按钮小部件。包含其他类型小部件的生成器?。但如果我这样做,我会得到:“RangeError(index):无效值:不在包含范围0..49:50中 我试图寻找问题,也有这个问题,但我找不到一个答案,解决它。

  • 我在颤振中使用Swiper,错误发生在我在列表中添加4个元素时。 我引用了链接抖动错误:RangeError(索引):无效值:不在范围0内。。2,包含:3,但无法在Swiper中实现。

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

  • 我在颤振中使用了一个很长的列表。所有项目都呈现良好,但我也收到以下错误: 以下是我的代码: 下面是我的方法: 下面是我的方法: 以下是错误的屏幕截图:

  • 我有一个列表视图。在我所有的“项目单元格”中创建。我从我的类列表中获取索引,它给了我一个错误: 引发了另一个异常:RangeError(索引):无效值:不在范围0内。。一,含:二。 对于输入字符串:“1277”表示输入字符串:“1277”表示输入字符串:“1277”表示输入字符串:“1277”表示输入字符串:“1277”表示输入字符串:“1277” ...

  • 列出dataListWidget(AsyncSnapshot快照){return snapshot.data.docs[0].map((文档){return ListTile(标题:Text(文档[“Name]”),副标题:Text(文档[“City”]),;})。toList();} //我的streamBuilder StreamBuilder(流:firestore.collection('