【发布时间】:2020-05-08 23:05:06
【问题描述】:
实际发生了什么?
main.dart
在initState中,我们正在调用服务器从数据库中获取图像,然后将其添加到接收器中
var capturedImagesList = List<dynamic>();
@override
void initState() {
super.initState();
_bloc.getImages(); //
});
}
集团类
final _urlImage = BehaviorSubject<List<dynamic>>();
get urlImageSink => _urlImage.sink;
get urlImageStream => _urlImage.stream;
Future getImages() async {
Response image = await _repo.getImages(); // call server
var imageResponse = Response.fromJson(image.body);
urlImageSink.add(imageResponse.images); // add image to sink
}
检索到的图片会横向显示ListView。
当点击+图片时,它会允许用户从图库中选择一张图片,然后放在ListView旁边,如下图。
一切正常!
但是当我再次单击 + 图像以添加更多图像时,它会抛出这个错误
[错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常: 迭代中并发修改:Instance(length:3) of '_GrowableList'。 E/颤振(32313):#0 List.addAll (dart:core-patch/growable_array.dart:187:11)
main.dart
这是从图库中选择图像后的代码。
@override
List<dynamic> userImage(File images) {
if (images != null) {
capturedImagesList.add(images.path); // add selected image to List
capturedImagesList.addAll(_bloc.urlImageStream.value); // add the server image to list
_bloc.urlImageSink.add(capturedImagesList); // add all images to list
}
return null;
}
错误指向这一行
capturedImagesList.addAll(_bloc.urlImageStream.value);
为什么第一次成功,第二次失败了?
【问题讨论】:
-
你找到解决办法了吗?
-
@rajithShetty 是的
-
@JohnJoe 解决方案是什么?
-
@AjayGautam 我在最后使用 for 循环。
标签: list listview flutter dart