Flutter将多张图片上传到Firebase

问题描述

当我要上传多张图片时,我遇到了问题。 我有一个包含“文件”的列表。我阅读了有关它的更多文章,并发现了这一点:

Future<List> uploadImage(List<Object> _imageFile) async {
    final user = await FirebaseAuth.instance.currentUser();
    List _urllist = [];

    int i = 0;
    await _imageFile.forEach((image) async {
      print('igen: ' + image.toString());
      
        // if (ref.getMetadata() != null) {   //should be deleted,but this isn't working
        //   await ref.delete();
        // }
        print(image.imageFile);
        final ref = FirebaseStorage.instance
            .ref()
            .child('business_image')
            .child(user.uid)
            .child(i.toString() + '.jpg');
        i++;
        StorageUploadTask uploadTask = ref.putFile(image.imageFile);
        StorageTaskSnapshot downloadUrl = await uploadTask.onComplete;
        String _url = await downloadUrl.ref.getDownloadURL();
        _urllist.add(_url);
      
    });
    print(_urllist);

    return _urllist;
}

但是当我调用此函数时:

List imageurllist;
final user = await FirebaseAuth.instance.currentUser();
uploadImage(getnewphotos).then((List urls) {
  imageurllist = urls;
  print(urls); //here I try to print it,but it returns null,guess the function don't wait for it?
  Firestore.instance.collection('users').document(user.uid).updateData({
    'email': widget.userData['email'],'username': userName != null ? userName : widget.userData['username'],'usertype': widget.userData['usertype'],'loclat': loclat != null ? loclat : widget.userData['loclat'],'loclng': loclng != null ? loclng : widget.userData['loclng'],'locationread':
        searchAddr != null ? searchAddr : widget.userData['locationread'],'services': serviceList,'opening': openstart != null ? openstart : widget.userData['opening'],'closing': closeend != null ? closeend : widget.userData['closing'],'userImage': imageurllist,});

  setState(() {
    isUpload = false;
  });
});

此功能有什么问题,有人可以帮我解决吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)