Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振:范围错误(索引):无效值:不在范围0..14内,包括:15_Flutter_Dart_Flutter Layout_Bloc - Fatal编程技术网

Flutter 颤振:范围错误(索引):无效值:不在范围0..14内,包括:15

Flutter 颤振:范围错误(索引):无效值:不在范围0..14内,包括:15,flutter,dart,flutter-layout,bloc,Flutter,Dart,Flutter Layout,Bloc,我正在使用bloc设计模式构建一个ListView,并且(flatter\u bloclib)当只放置列表长度和返回小部件时,列表已分页,工作正常 但当我尝试在列表中添加一个指示器,并为itemCount添加+1以加载UI时,就会出现问题 错误 在1900ms内重新启动应用程序。 [38;5;248m════════ widgets库捕获到异常═══════════════════════════════════[39;49m [38;5;244在建筑中抛出以下Range错误:[39;49米 R

我正在使用bloc设计模式构建一个
ListView
,并且(
flatter\u bloc
lib)当只放置列表长度和返回小部件时,列表已分页,工作正常

但当我尝试在列表中添加一个指示器,并为itemCount添加
+1
以加载UI时,就会出现问题

错误

在1900ms内重新启动应用程序。
[38;5;248m════════ widgets库捕获到异常═══════════════════════════════════[39;49m
[38;5;244在建筑中抛出以下Range错误:[39;49米
RangeError(索引):无效值:不在范围0..14中,包括:15
[38;5;244M当抛出异常时,这是堆栈[39;49m]
[38;5;244m#0列表。[](dart:core patch/Growtable#U阵列。dart:149:60)[39;49m
[38;5;248m#1#HomePageState.build.[39;49m
[38;5;244m#2 SliverChildBuilderDelegate.build[39;49m
[38;5;244m#3 SliverMultiboxAdapterElement._-build.[39;49m
[38;5;244m#4#HashMap.putIfAbsent(省道:收集补丁/收集补丁。省道:139:29)[39;49m
[38;5;244m…[39;49m
[38;5;248m════════════════════════════════════════════════════════════════════════════════[39;49m
列表的代码

返回BlocListener(
侦听器:(上下文、状态){
如果(状态为事后错误){
Scaffold.of(上下文).showSnackBar(
SnackBar(内容:Text(state.errMsg))
);
}
},        
子:BlocBuilder(生成器:(上下文,状态){
if(状态为后正弦| |状态为后加载){
返回加载();
}else if(状态为PostsLoaded){
返回ListView.builder(
itemCount:state.HasReacheMax
?状态、位置、长度
:state.posts.length+1,
控制器:\ u滚动控制器,
itemBuilder:(构建上下文,int i){
最终职位=州职位[i];
返回(i>=state.posts.length)
?中心(子项:循环压缩机指示器())
:ListTile(前导:Text(i.toString()),标题:Text(post.title,style:TextStyle(fontwweight:fontwweight.bold));
}
);
}
返回errorMsg();
}),
);

首先检查长度。如果数组不会越界,则只能尝试使用final Post Post=state.posts[i]访问元素;

我还没试过,但我希望这对你有用

itemBuilder: (BuildContext context, int i) {
          if(i >= state.posts.length){
            return Center(child: CircularProgressIndicator());
          }
          final Post post = state.posts[i];
          ListTile(leading: Text(i.toString()), title: Text(post.title, style: TextStyle(fontWeight: FontWeight.bold),));
        }
```

非常感谢,它工作起来很有魅力,但我不明白我的代码中有什么错误,你的代码和我的代码之间有什么区别我的代码不会达到行状态。如果我>=长度,则发布[I]。但是你的会。如果对你有效,请接受答案。:)完成,谢谢澄清