Показывать локальные изображения и изображения сервера (с кэшированием) в 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(),
);
}