Flutter 颤振:范围错误(索引):无效值:不在范围0..14内,包括:15
我正在使用bloc设计模式构建一个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
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]。但是你的会。如果对你有效,请接受答案。:)完成,谢谢澄清