Как в Flutter показывать офлайн-изображения из Firebase с помощью CachedNetworkImage?

Я пытаюсь заставить мое приложение Flutter работать в автономном режиме с Firebase. Я храню ссылки на свои изображения в Firestore и файлы изображений в Storage. У меня работает часть Firestore, и я использую CachedNetworkImageProvider для отображения своих изображений, которые кешируются для использования в автономном режиме. Но когда я не в сети, даже если изображение кэшировано, я не могу получить URL-адрес изображения, поэтому я не могу передать его в CachedNetworkImageProvider, который использует URL-адрес в качестве ключа.

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

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

Код для получения URL:

// this doesn't work offline
category.url = await storage
    .ref()
    .child("category_images/drawable-${DeviceInfo.dpiString}")
    .child(document.data["media"]["src"])
    .getDownloadURL();

Код для отображения изображения:

image: new CachedNetworkImageProvider(_category.url),
2
0
1 658
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам также необходимо сохранить URL-адрес. Хорошим местом может быть ссылка на изображение, которое у вас есть в пожарном магазине.

Другой вариант - использовать локальный файл, поскольку вы говорите, что знаете путь, хотя я думаю, что ссылка через URL-адрес более понятна.

Я думал, что не должен сохранять URL-адрес из-за токена, но ваш ответ заставил меня копнуть Диппера, и я обнаружил, что токен на самом деле связан с контентом, а не с пользователем или датой, это означает, что я могу его хранить и использовать . Я приму твой ответ. Спасибо!

Ricardo Smania 20.05.2018 18:10

Другие вопросы по теме