Как загрузить несколько изображений из FirebaseStorage во флаттере, когда требуются разрешения? - PullRequest
0 голосов
/ 26 июня 2019

То, что я пытаюсь сделать, это показать список элементов как виджет карты каждый.Таким образом, каждая карта будет содержать изображение, заголовок, текст, кнопку ... примерно так:

enter image description here

шаги:

1- Загрузить данные о продуктах из Firebase-Store , используя StreamBuilder (Готово).

2 - Миниатюрный URL-адрес продуктов загружается из базы данных, затем загружается изображение из Firebase-Storage с использованием NetworkImage (Готово).

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

Мои новые правила FirebaseStorage: allow read, write: if request.auth != null;

4- Чтобы исправить это, я работаю над загрузкой изображений в память с помощью getData ()

final FirebaseStorage storage = FirebaseStorage(
      app: Firestore.instance.app,
      storageBucket: 'gs://...'
);

  Uint8List imageBytes;
  String errorMsg;

SOME_CONSTRUCTOR() {
  storage
    .ref()
    .child(imageTitle)
    .getData(10000000)
    .then(..)..
}

Затем загрузите изображение из памяти:

Image.memory(imageBytes, fit: BoxFit.cover,)

это работает нормально, но я ищу лучший метод для этого и вот мои вопросы:

A- Этот код должен быть частью load-from-db («поток» потока)Builder) или более поздней версии внутри создания карт из извлеченных данных из db («построитель» streamBuilder)?

B - есть ли возможность загрузить изображение во время загрузки изdb, предположим, что каждая запись в db имеет изображение (1-к-1), поэтому оно будет выглядеть так:

fetch row-> download its image 

fetch row-> download its image 

THEN NEXT ROWs...

?

C- Или лучше загрузить элементы, тогдастроить карты, а затем загружать изображения, пока карты видны для пользователей?

D- Есть еще какие-нибудь советы, которые могут помочь мне разобраться с этим?

...