Flutter get Скачать URL-адрес из хранилища Firebase - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь загрузить миниатюру изображения из Firebase Storage, чтобы улучшить производительность моего приложения.После того, как миниатюра загружена, должно отображаться фактическое изображение.По этой причине я реализовал облачную функцию, которая автоматически загружает миниатюру для каждого изображения.

У меня нет проблем с получением URL загрузки из загруженного изображения.Но из-за причины, по которой генерация миниатюры занимает 3 секунды, я не могу автоматически извлечь URL загрузки из миниатюры.

Вот что я до сих пор придумал:

   Future uploadImage(var imageFile) async {

 var uuid = new Uuid().v1();
 StorageReference ref = FirebaseStorage.instance.ref().child("post_$uuid.jpg");
 StorageUploadTask uploadTask = ref.putFile(imageFile);
 String downloadUrl = await (await uploadTask.onComplete).ref.getDownloadURL();

 StorageReference reff = FirebaseStorage.instance.ref().child("thumb_post_$uuid.jpg");
 String url = (await reff.getDownloadURL()).toString();

 setState(() {
   downloadUrlThumb = url;
   downloadUrlFull = downloadUrl;
 });
}

Любая идея о том, как я могу ждать загруженного эскиза или как я могу отложить метод getDownloadURL() для downloadUrlThumb()?

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Вы можете записать запись в базу данных, когда создание миниатюры будет завершено
и подписаться на обновления для этой таблицы, чтобы получать уведомления в клиентском приложении при добавлении записи.
Если вы пишете путь к загруженному файлуфайл (или путь миниатюр) к базе данных, в котором вы можете определить, какая загрузка / создание миниатюр была завершена.

0 голосов
/ 05 апреля 2019

В облачной функции вы можете сохранить URL-адрес в хранилище после создания эскиза.

пример: после сохранения записи

{
   hello: "world",
   imageUrl: "asldnbalskd.firebase.storage.com"
}

примерно через 5 секунд, когда миниатюра отображаетсягенерируется

{
   hello: "world",
   imageUrl: "asldnbalskd.firebase.storage.com",
   imageUrlThumbnail: "thumbnail-asldnbalskd.firebase.storage.com"
}

В флаттере вы можете просто прослушать документ на предмет любых изменений.

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