我需要获取transformPhotos函数的结果,该函数应该给我base64中的图像列表(确实如此),但是当我在下一个函数中获得它时,它会抛出[]
int32
Future<List<String>> transformPhotos() async {
List<String> imagesToBase64 = [];
if (_images.length > 0) {
_images.forEach((File imageFile) async {
imagesToBase64.add(await utils.imageToBase64(imageFile));
});
}
return imagesToBase64;
}
我希望得到如下结果:Future<void> uploadPhotos() async {
transformPhotos().then((onValue) {
print(onValue); //throws []
});
}
问候,非常感谢!
答案 0 :(得分:1)
填充列表的代码是异步的:imagesToBase64.add(await utils.imageToBase64(imageFile));
但是您将返回列表,而无需等待异步计算完成。基本上,return imagesToBase64;
在添加任何值之前被调用,因此为空。尝试这种事情:
return Future.forEach(_images, (File imageFile) async {
imagesToBase64.add(await utils.imageToBase64(imageFile));
}).then((_) => imagesToBase64);