首页 > 解决方案 > Flutter Firebase 上传多张图片

问题描述

上传多张图片并等待 URL 列表,图片在几秒钟后成功加载到 firestore 并返回 url,但在此之前,future 函数返回 null

Future<List<dynamic>> uploadImage() async {
     _imageFile.forEach((image) async {
      String rannum = Uuid().v1();
      StorageReference reference =
          FirebaseStorage.instance.ref().child('Reviews').child(rannum);
      StorageUploadTask uploadTask = reference.putFile(image);
      StorageTaskSnapshot downloadUrl = (await uploadTask.onComplete);
      String _url = await downloadUrl.ref.getDownloadURL();
      _urllist.add(_url);
    });

    return _urllist;
  }

标签: firebaseflutterfirebase-storage

解决方案


你必须像这样调用你的函数:

uploadImage(_imageFile).then((List<String> urls) => urls.forEach((element) => print(element)))

我还改变了你的功能:

Future<List<String>> uploadImage(List<File> _imageFile) async {
    List<String> _urllist = [];
    await _imageFile.forEach((image) async {
      String rannum = Uuid().v1();
      StorageReference reference =
      FirebaseStorage.instance.ref().child('Reviews').child(rannum);
      StorageUploadTask uploadTask = reference.putFile(image);
      StorageTaskSnapshot downloadUrl = await uploadTask.onComplete;
      String _url = await downloadUrl.ref.getDownloadURL();
      _urllist.add(_url);
    });

    return _urllist;
  }

我也不明白你为什么用括号括起来“等待uploadTask.onComplete”


推荐阅读