#flutter #dart #flutter-layout #flutter-image #flutter-layoutbuilder
#изменение размера изображения #dart #изменение макета #flutter-layoutbuilder
Вопрос:
Вот видео моей проблемы https://www.youtube.com/watch?v=wskX_bZNExw
Если вы заметили, после загрузки сетевого изображения его размер изменяется (обычно удаляется пустое пространство).
Widget _buildPostThumbnail(List<SubmissionPreview> thumbnails) {
if (thumbnails != null amp;amp; thumbnails.isNotEmpty) {
var image = thumbnails.first.resolutions.last;
return Container(
width: double.maxFinite,
child: FadeInImage.memoryNetwork(
placeholder: kTransparentImage,
image: image.url.toString(),
),
);
}
return Container();
}
Как я могу заставить изображение занимать минимальное пространство с момента его появления на экране, а не после того, как оно успеет изменить размер?
Спасибо.
Ответ №1:
Вы можете установить height
для окружения Container
фиксированное значение и работать с fit: BoxFit.fitheight
ним в своем FadeInImage
.
Комментарии:
1. Привет, да, установка высоты определенно исправит эту проблему. Однако некоторые изображения будут полностью искажены с точки зрения соотношения сторон. Есть идеи по сохранению нормальной высоты изображения?
2. Что ж, Boxfit позаботится о том, чтобы у вас было видно полное изображение. Я не думаю, что одновременно будет возможен КАК исходный размер изображения, так и изменение размера.
Ответ №2:
Widget _buildPostThumbnail(List<SubmissionPreview> thumbnails) {
if (thumbnails != null amp;amp; thumbnails.isNotEmpty) {
var image = thumbnails.first.resolutions.last;
return FadeInImage.memoryNetwork(
fadeInDuration: Duration(milliseconds: 200),
placeholder: kTransparentImage,
image: image.url.toString(),
width: double.maxFinite,
fit: BoxFit.fitWidth,
height: (image.height.toDouble() / image.width.toDouble()) * MediaQuery.of(context).size.width,
);
}
return Container();
}
Я понял это, вы хотите разделить высоту на ширину, а затем умножить ее на ширину вашего контейнера (в этом случае я хочу, чтобы края фотографии совпадали с телефоном).