Добавление ресурсов и изображений
Приложения Flutter могут включать как код, так и ресурсы. Ресурс — это файл, который связан и развернут вместе с вашим приложением и доступен во время выполнения. Общие типы ресурсов включают статические данные (например, файлы JSON), файлы конфигурации, значки и изображения (JPEG, WebP, GIF, анимированные WebP/GIF, PNG, BMP и WBMP).
Указание ресурсов
Вот пример:
Flutter использует pubspec.yaml
файл, расположенный в корне вашего проекта, для определения ресурсов, необходимых приложению.
Чтобы включить все активы в каталоге, укажите имя каталога с /
символом в конце:
Включаются только файлы, расположенные непосредственно в каталоге, если только внутри подкаталога нет файлов с таким же именем (см. Варианты ресурсов ). Чтобы добавить файлы, расположенные в подкаталогах, создайте запись для каждого каталога.
Загрузка изображений
Flutter может загружать изображения с разрешением, соответствующим текущему соотношению пикселей устройства.
Объявление ресурсов изображения с поддержкой разрешения
AssetImage
понимает, как сопоставить логически запрошенный ресурс с тем, который наиболее точно соответствует текущему соотношению пикселей устройства . Чтобы это сопоставление работало, ресурсы должны быть расположены в соответствии с определенной структурой каталогов:
Где M и N — числовые идентификаторы, соответствующие номинальному разрешению содержащихся в них изображений. Другими словами, они определяют соотношение пикселей устройства, для которого предназначены изображения.
Предполагается, что основной актив соответствует разрешению 1.0. Например, рассмотрим следующий макет ресурса для изображения с именем my_icon.png
:
На устройствах с соотношением пикселей устройства 1,8 .../2.0x/my_icon.png
выбирается ресурс. .../3.0x/my_icon.png
Актив выбран для соотношения пикселей устройства 2,7 .
Если ширина и высота визуализируемого изображения не указаны в Image
виджете, номинальное разрешение используется для масштабирования актива, чтобы он занимал столько же места на экране, сколько и основной актив, только с более высоким разрешением. То есть, если .../my_icon.png
72px на 72px, то .../3.0x/my_icon.png
должно быть 216px на 216px; но они оба отображают в 72px на 72px (в логических пикселях), если ширина и высота не указаны.
Каждая запись в разделе актива pubspec.yaml
должна соответствовать реальному файлу, за исключением основной записи актива. Если основная запись ресурса не соответствует реальному файлу, ресурс с самым низким разрешением используется в качестве запасного для устройств с соотношением пикселей устройства ниже этого разрешения. Однако запись должна быть включена в pubspec.yaml
манифест.
Загрузка изображений
Чтобы загрузить изображение, используйте AssetImage
класс в build()
методе виджета.
Например, ваше приложение может загрузить фоновое изображение из описанных выше объявлений активов:
Все, что использует набор ресурсов по умолчанию, наследует информацию о разрешении при загрузке изображений. (Если вы работаете с некоторыми классами более низкого уровня, такими как ImageStream
или ImageCache
, вы также заметите параметры, связанные с масштабом.)
Соотношение пикселей устройства зависит от MediaQueryData.size , для которого требуется наличие либо MaterialApp , либо CupertinoApp в качестве предка вашего файла AssetImage
.
Подробная документация
Last updated