Показывать локальные изображения и изображения сервера (с кэшированием) в Flutter

Я пытаюсь показать изображение в виджете, выбранном из Image-Gallery, а также из загруженных по сети изображений.

CachedNetworkImage прекрасно работает с сетевыми изображениями, но когда я пытаюсь передать выбранное изображение из галереи, оно не работает.

CachedNetworkImage(
      imageUrl: url,
      placeholder: (context, url) => new CircularProgressIndicator(),
      errorWidget: (context, url, error) => new Icon(Icons.error),
    );

Пожалуйста, помогите мне показать это.

Цель: 1. Может загружать локальные изображения 2. Может загружать сетевые изображения 3. Может показывать кэшированные изображения.

Заранее спасибо.

1 ответ

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

      var imgUrlEndpoint = 'https://picsum.photos/250?image='
var imgId = '9';
var imgFile = File('path/to/file/$imgId.jpg');

// Check if image file exists
if(imgFile.exists()){
  // Load image from storage
  Image.file(imgFile);
} else {
  // Load image from network
  CachedNetworkImage(
    imageUrl: '$imgUrlEndpoint$imgId',
    placeholder: (context, url) => CircularProgressIndicator(),
  );
}
Другие вопросы по тегам