Flutter Firebase загрузить несколько изображений - PullRequest
1 голос
/ 30 апреля 2020

Загружая несколько изображений и ожидая списка URL-адресов, изображения были успешно загружены в FireStore через несколько секунд и возвращают URL, но перед этим функция будущего возвращается с нулем

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;
  }

1 Ответ

0 голосов
/ 30 апреля 2020

Вы должны вызывать свою функцию следующим образом:

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 "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...