我需要得到transformphotos函数的结果,它应该给我一个base64中的图像列表(它是这样的),但是当我在下一个函数中得到它时,它抛出[]
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 []
});
}
我希望得到如下结果:
[String, String, String]
非常感谢!
最佳答案
填充列表的代码是异步的:imagesToBase64.add(await utils.imageToBase64(imageFile));
但是您返回列表时不需要等待异步计算完成。基本上,return imagesToBase64;
在添加任何值之前被调用,因此是空的。尝试这种方法:
return Future.forEach(_images, (File imageFile) async {
imagesToBase64.add(await utils.imageToBase64(imageFile));
}).then((_) => imagesToBase64);