#flutter #dart #flutter-layout
Вопрос:
Клип(ребенок:Изображение.сеть(«http://197.13.15.233:8787/api/v1/user/$id/картинка», подходит: BoxFit.обложка, ширина: 40, высота: 40, ключ: ValueKey(новый случайный().nextInt(100)), заголовки: { «авторизация»: «Токен $на предъявителя», // Другие заголовки, если требуется }, Загрузчик:(Контекст BuildContext, дочерний виджет,загрузка imagechunkeventпрогресс) {
if (loadingProgress == null) return child;
return ClipOval(
child: Container(
width: 40,
height: 40,
child: Center(
child: CircularProgressIndicator(
value: loadingProgress.expectedTotalBytes != null ?
loadingProgress.cumulativeBytesLoaded / loadingProgress.expectedTotalBytes
: null,
),
),
),
);
},
errorBuilder: (BuildContext context, Object exception, StackTrace stackTrace) {
return SvgPicture.asset(
"Assets/Images/avatar.svg",
width: 40,
height: 40,
fit: BoxFit.cover,
);
},
),
)
Комментарии:
1. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.
Ответ №1:
Каждый раз, когда вы вызываете setState
соответствующие StatefulWidget
перестройки. Таким образом, сетевое изображение снова извлекается из сети.
Чтобы избежать этого, вы можете использовать CachedNetworkImage. Он будет кэшировать ваш сетевой образ, больше не мигая.
Комментарии:
1. мигание происходит, когда в URL-адресе нет изображения . я имею в виду мигание индикатора ошибок. мне нужен способ вызвать URL-адрес только один раз и установить в кэше изображение с ошибкой .
2. Вы получите
errorWidget
собственность внутриCachedNetworkImage
. Попробуйте упаковку3. Если вы извлекаете URL-адрес изображения из api, вызовите внутренний api
initState
. Если у вас есть фиксированный URL-адрес изображения, вы должны кэшировать изображение, чтобы каждый раз прекращать извлечение данных изображения