У меня есть список ораторов. Когда я нажимаю на любой из элементов, я перехожу на страницу с подробной информацией об этом докладчике. При переходе маленький аватар трансформируется в большой с помощью виджета «Герой». Эти аватары — CachedNetworkImages. В обычном состоянии (когда образ успешно загружается из сети) все работает нормально. Однако если смоделировать ситуацию, когда изображение не загружается или возникает другая ошибка, errorWidget CachedNetworkImages начинает мерцать во время перехода.
GIF того, как это выглядит сейчас: https://imgur.com/a/E7ogQhV
(Извините, по неизвестной причине я не могу загрузить это через сайт.)
Я попробовал получить изображение самостоятельно и, в зависимости от кода ответа, выбрал отображение либо виджета-заполнителя, либо CachedNetworkImages. Однако возникло другое поведение: виджет-заполнитель отображался в начале, даже если изображение уже было успешно загружено.
У меня есть список ораторов. Когда я нажимаю на любой из элементов, я перехожу на страницу с подробной информацией об этом докладчике. При переходе маленький аватар трансформируется в большой с помощью виджета «Герой». Эти аватары — CachedNetworkImages. В обычном состоянии (когда образ успешно загружается из сети) все работает нормально. Однако если смоделировать ситуацию, когда изображение не загружается или возникает другая ошибка, errorWidget CachedNetworkImages начинает мерцать во время перехода. GIF того, как это выглядит сейчас: https://imgur.com/a/E7ogQhV (Извините, по неизвестной причине я не могу загрузить это через сайт.) Я попробовал получить изображение самостоятельно и, в зависимости от кода ответа, выбрал отображение либо виджета-заполнителя, либо CachedNetworkImages. Однако возникло другое поведение: виджет-заполнитель отображался в начале, даже если изображение уже было успешно загружено. [code]class NetworkImageWidget extends StatefulWidget { const NetworkImageWidget({ super.key, required this.imageUrl, this.width, this.height, this.fit = BoxFit.cover, });
final String? imageUrl; final double? width; final double? height; final BoxFit? fit;
@override State createState() => _NetworkImageWidgetState(); }
class _NetworkImageWidgetState extends State { @override void initState() { super.initState(); // fetchImage(); }
class _PlaceHolderImageWidget extends StatelessWidget { const _PlaceHolderImageWidget({this.width, this.height, this.fit});
final double? width; final double? height; final BoxFit? fit;
@override Widget build(BuildContext context) => Image.asset( Images.largePlaceholder, width: width, height: height, fit: fit, ); } [/code] Это мой код виджета для CachedNetworkImages, который я затем обертываю в виджет Hero.