迭代图像列表时,将来的<List <String >>返回null

时间:2019-08-06 15:26:50

标签: android ios flutter dart

我需要获取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 [] }); }

问候,非常感谢!

1 个答案:

答案 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);