Flutter屏幕适配之二:Image资源assets的使用,实现不同分辨率图片的适配

Flutter屏幕适配 的物理像素 ,有的也叫分辨率 是 750x1334 ,这个指的是像素pixel,单位是px,UI设计出的图,单位就可能是px值。地址:https://github.com/OpenFlutter/flutter_screenutil。没有传入单位,此时其实用的是单位是pt,也就是point,点的概念。的 devicePixelRatio 等于2,这是怎么来的呢?在Flutter中可以通过 window 来获取。点事抽象的单位,它们只在逻辑坐标系上有意义。在刚开始,所有的图形位置都由坐标点指定。 阅读详情

这两天在研究Flutter的屏幕适配方案。

关于尺寸大小已经有点眉目了,初步定了利用等比例缩放,感兴趣的朋友可移步Flutter屏幕大小适配。

但是还是不清楚怎么进行图片分辨率适配的,在百度了之后,仍然有点云里雾里,罢了,直接上官网看吧,果然,清晰了。这里附上官网链接Image.asset页面。

这里只说本地文件夹下图片资源配置及使用的问题。关于构造函数、使用别的包里的图片等其他情况不做叙述。

我最初在看的时候一直在纠结以下几个问题:

  • iOS和Android是共用一套图片吗?是怎么共用的?
  • 各个平台系统是怎么判断该用哪个分辨率的图片的呢?
  • 不同分辨率的图片我应该怎么放?
  • 在yaml文件中怎么配置?怎么引用?

下面一一解答上面的4个问题。

iOS和Android是共用一套图片吗?是怎么共用的?

既然用flutter,是为了ios和Android工台开发一套代码,那图片肯定也是可以一起用的,其实我的疑问主要在后半句,怎么共用。

不同分辨率的图片我应该怎么放?

一般我们将图片资源放在跟pubspec.yaml同级的一个image文件夹下,然后在image文件夹下新建2.0x、3.0x子文件夹,将对应倍数的图片放到对应的文件夹内,直接在image文件夹下的是倍数为1.0的。

自己的目录,名字起得不太一样

在yaml文件中怎么配置

官网截图​​​​
自己的声明
自己的文件目录

官网那个截图中就是比较详细,每一张图片的1.0、2.0、3.0都声明了。

我自己写的比较简略,直接写“img/”这种,表示 img/ 这个文件夹下面的所有图片。

在准备图片资源的时候,1.0倍的可以省略,如果省略了,系统会直接使用最接近的,如2.0倍数的,但是在yaml文件中的声明不能省略。

但假如我使用了简写img/这种方式,1.0倍的forward.png图片在img文件夹中是没有的,所以用img/不能声明到,要单独声明一下,这样调用的时候才能加载到子文件夹中的图片(见上面的图)。

官网截图

各个平台系统是怎么判断该用哪个分辨率的图片的呢?

flutter中会首先根据系统的devicePixelRatio(每一个逻辑像素包含多少个原始像素,可以通过MediaQueryData.devicePixelRatio来得到)来找对应倍数的文件夹下的图片,如果没有对应倍数,找最接近的。

官网截图


 

怎么使用?

使用的时候,不用带2x、3.5x这些,直接是1.0倍的那个声明,粘贴过来就行:

官网截图
Flutter跨端开发实战:从环境搭建到性能优化的完整项目指南 跨平台移动应用开发已成为现代软件工程的重要方向,它通过一套代码库实现多端部署,大幅提升了开发效率和产品一致性。其核心原理在于利用统一的渲染引擎和框架层,桥接不同操作系统的原生能力。这项技术的核心价值在于平衡开发效率、性能表现与原生体验,尤其适用于需要快速迭代和强交互性的应用场景。在众多技术方案中,Flutter凭借其高性能的Skia渲染引擎和响应式框架脱颖而出,成为构建如MindFlow这类个人效率工具的理想选择。本文基于Flutter开发实践,深入探讨了如何通过BLoC状态管理、Dio网络层封装和Hive 阅读详情

相关推荐

Flutter 教程之 如何添加本地照片通过assets管理(教程含源码)

Flutter是由 Google 开发的开源、跨平台的 UI 开发工具包。如今,它越来越受欢迎,因为用 Flutter 制作的应用程序可以在各种设备上运行,无论其平台如何。它主要用于为 Android 和 iOS 开发应用程序,因为用 Flutter 制作的单个应用程序可以在两个平台上高效运行。在这里,我们将学习如何在 Flutter 应用中添加图像。构建时的颤振应用程序同时具有资产(资源)和代码。资产在运行时可用和部署。资产是一个文件,可以包含静态数据、配置文件、图标和图像。......

iCloudEnd的博客 1955

Flutter 图片适配2x,3x,4x

像素(px): 屏幕上的点 dip(dp):Density-independent pixel--->与密度无关的像素 由于JPG容易失真, 在Android开发中尽量避免使用.jpg图片, 应该使用.png图片, 它采用了从LZ77派生的无损数据压缩算法. 画布的概念就是一个手机屏幕,例如现在的通用设计屏幕是1920*1080,所以设计师只需要找一个这样分辨率的画布进行app设计 图片大小 上面说到了画布的概念,现在来说图片的大小,图片的大小指的就是长*宽,当然这里说的图片大小...

小哥丷的博客 2768

【flutter】搭建Android本地web服务项目开发流程详解

闲置不用的智能手机可以用来搭建本地web站点,托管静态网页,主要应用场景是把保存的电子资料放在本地web站点中供一家人(或者室友)访问,方便管理和查阅学习资料,还有其它自己想不到的应用场景 看懂此文章需要满足以下条件 熟悉使用AndroidStudio开发工具 会开发Flutter项目,了解插件相关知识 会开发网页模板项目,了解部署静态网页托管 首先,AndroidStudio开发工具中,选择start a flutter project新建一个Flutter项目,其目录下有一个文件pubspec

7070

Flutter下不同分辨率图片的加载

Android不同像素密度的图片和Flutter的像素比率的对应关系 ldpi 0.75x mdpi 1.0x hdpi 1.5x xhdpi 2.0x xxhdpi 3.0x xxxhdpi 4.0x 对不同分辨率的图片Flutter的处理方式: 如果想把图片资源放在images文件夹中,那么把图片(1.0x)放置到images文件夹中,并把其他分辨率的图片放在对应的子文件夹中,并接上合适的比例系数 images/my_icon.png images/2.0x/m

黄老五的专栏 2146

以GD32F103C8T6为例的核心板原理图PCB绘制学习笔记简单总结

重点在supplier part是立创商城的编号,可以搜到。

2301_80397661的博客 3261

GROMACS自由能景观图绘制全流程:从PCA分析到Origin 3D可视化(附避坑指南)

本文详细解析了使用GROMACS绘制自由能景观图的全流程,涵盖从PCA分析、数据预处理、自由能计算到最终在Origin中进行3D可视化的完整步骤。文章重点分享了数据处理与格式转换中的常见“避坑”指南,帮助研究者从分子动力学轨迹中有效提取并解读构象自由能信息,深化对生物大分子动力学过程的理解。

oauth7security的博客 309

flutter系统自适应宽高和ScreenUtils手动适配宽高的原理与区别

因此可以得出结论,当ScreenUtils初始化的时候的宽高和设备的逻辑宽高完全一致的时候,效果是完全一样的,换言之,如果初始化设置的宽高和设备的逻辑宽高不一致,则强制使用初始化设置的宽高为准,这样,不同的手机,都会强制使用screenUtils初始化时设置的宽高作为标准来达成统一。如果使用screenutils,那当前的100就不能当初逻辑像素,需要先转换一次(最终的逻辑宽度=设置的宽度(100)*设备逻辑宽度/ScreenUtils初始化时设置的宽度),然后再乘以设备像素比,最终得到物理像素。

qq_35945801的博客 2153

超过4.2万个AOI(地理围栏),深圳市2025年2月15日更新的全类别AOI,矢量图层(全国22个超大特大城市AOI更新系列)

超过4.2万个AOI(地理围栏),深圳市2025年2月15日更新的全类别AOI,矢量图层(全国22个超大特大城市AOI更新系列)

1071

python按关键字爬取必应高清图片

通过查询前人的博客,发现必应可通过url按关键字查找图片: https://www.bing.com/images/async?q=查询关键字&first=图片编号&count=图片数量&mmasync=1 基于该url,我写了一个爬虫类,实现了按关键字下载固定数量的必应高清图片。调用时只需要一条python语句即可(由于使用了线程池并发请求图片,所以下载速度较快,一分钟300张高清图片没问题): # 关键词:电脑壁纸 # 需要的图片数量:100 # 图片保存路径:'.

澄南澄北的博客 4789

华为OD机试真题 新系统2026-04-08 Python&JS 实现【配置操作失败数量统计】

模拟一个系统的命令行配置,包含添加、修改、删除三项操作,详情如下: 添加操作命令:add_rulerule_id=1rule_index = 18 修改操作命令: mod_rule rule_id= 1rule_index = 100 删除操作命令:del_rulerule_id=1

MISAYAONE的博客 586

基于YOLOv11的仓库机器人导航系统设计与实现:Amazon Robotics Challenge解决方案

本文将详细介绍一个基于YOLOv11目标检测算法的仓库机器人导航系统,该系统能够准确识别托盘(pallet)和箱子(box),为机器人提供精确的导航信息。而基于深度学习的视觉导航系统能够实时识别环境中的关键物体,如托盘和箱子,从而实现更智能的路径规划和货物搬运。YOLOv11作为YOLO系列的最新演进版本,在检测精度和速度上都有显著提升,非常适合仓储环境中的实时物体检测任务。YOLOv11在保持实时性的同时,提高了对小物体和密集物体的检测能力,这对仓储环境中的托盘和箱子检测尤为重要。

YOLO 303

Flutter-适配相关

一、前言 做移动应用开发,各个系统都自己的适配方案,比如Android可以用dp、sp来描述大小,IOS使用pt来描述。但是入手Flutter后,却发现我们要描述的widget的大小没有单位,比如 Container( width: 40, height: 40, ), 那么这个40到底是什么意思呢?px、dp或者dp,其实都不是。 二、了解的Flutter的尺寸 测试手机信息:720 * 1080 320dpi。 运行以下测试代码 void main(){ runApp(MaterialA

mrRuby的博客 2511

基于四旋翼模型的火箭型无人机视线角保持控制仿真设计

本文针对火箭型无人机的视线角保持控制问题展开研究。基于四旋翼动力学模型,通过改造设计了一种摄像头朝上安装的特殊无人机系统,用于追踪空中目标。文章详细推导了坐标系定义、运动学和动力学方程,重点分析了摄像头安装与视线几何关系,建立了目标运动模型和视线向量计算方法。通过解算期望姿态角,实现了使机体Z轴始终对准目标的控制目标。仿真结果表明,该系统能有效完成视线角保持任务,为空对空监视等应用场景提供了可行方案。~~~~~

huanghm88的专栏 140

Flutter随记五:Image、FadeImage、ResizeImage、FileImage、AssetImage组件使用及使用问题解决

Flutter随记五:Image、FadeImage、ResizeImage、FileImage、AssetImage组件使用及使用问题解决

鸡肋佐的博客 4849

Python 爬虫实战:爬取知乎问答与评论数据并分析

摘要:本文以Python为核心工具,系统讲解知乎问答与评论数据爬取的技术方案。通过分析知乎API接口结构,详细阐述Requests库结合正则表达式的数据获取方法,涵盖请求头构造、鉴权参数处理等关键技术。文章对比了HTML解析、API调用和Selenium模拟三种爬取方案的优劣,提供完整的代码实现,包括问题信息获取、回答列表爬取和评论数据提取。同时介绍了数据存储(JSON/Excel)和基础文本分析(词云生成)方法,并给出合规使用建议和技术优化方向,为开发者提供了一套可落地的知乎数据爬取与分析解决方案。

2503_91057718的博客 1820

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Flutter 屏幕适配之相对尺寸适配

那么来看看具体该怎么实现吧,其实很简单,首先我们和UI约定,UI图中的设备宽高是多少,在我们这里是宽375,高812。然后如下就是具体的实现代码,使用的方式也很简单,比如说,在UI图中,标记出是1pt的尺寸,我们完全可以通过1.pt的方式来指定其尺寸。有些长,有的短,有的粗,有的细,这个的确給用户提供了非常多的选择,但是对于开发来说就比较苦恼了。请注意,如果使用这两种尺寸存在一些问题,比如遇到尺寸不是375*812的尺寸的设备那些方块的图形就会被拉伸成长方形。pt表示横向的尺寸,hpt表示纵向的尺寸。

qq_31433709的博客 1143

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

flutter app实现分辨率自适应的图片资源加载

设备像素比是设备物理像素与逻辑像素的比例。

getapi的博客 1751

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

在 Flutter 中,Image.asset 从其他包中加载资源

在 Flutter 中,Image.asset 是一个用于加载本地资源(如图片)的构造方法,而 package 参数用于从其他包中加载资源。那么图片可以直接通过 ‘assets/placeholder.png’ 被加载。这样,Image.asset 会成功加载 package4 中的图片资源。加载 package4 包中的资源。加载当前项目中声明的资源。

galoiszhou的博客 1353

【Flutter】屏幕像素适配方案 ( flutter_screenutil 插件 )

一、推荐使用 flutter_screenutil 插件、 二、flutter_screenutil 插件使用、 1、导入 flutter_screenutil 插件依赖、 2、 flutter_screenutil 初始化、 3、 flutter_screenutil 使用 API、 4、 设置字体、 5、 设置宽高、 三、代码示例、 四、博客资源、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

Flutter屏幕适配,简单粗暴的全局适配方式

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2401_84122016的博客 1267

Flutter框架跨平台鸿蒙开发——图片适配模式

BoxFit控制图片在容器中的显示方式,是图片布局的核心属性。

xingfanjiuge的博客 770

flutter相机权限适配

在Android 12 (API level 32) or lowe使用storage。使用的是permission_handler,版本是^11.0.1,在Android13及以上使用photos;

aaa1011717673的博客 332

Flutter 图片 Image 图标 Icon 参数图文理解

文章目录Image加载项目的资源图片加载系统的图片加载网络图片FadeInImage 使用Image 填充模式第三方库推荐IconIcon 的优势Icon 使用例子第三方库推荐 Image Image组件用于显示图片,而图片的来源大概可分为以下: 项目的资源图片 系统的图片 加载网络图片 加载项目的资源图片 在工程根目录下创建一个images目录,并将图片p3.png拷贝到该目录。 在pu...

龙衣 1822

Flutter如何正确使用图片资源

但是没有解决问题2,如果开发人员勿删还在使用的图片资源时,编译是不会报错的,运行也是没有问题的,只有到使用此图片资源的界面才会发现错误,导致bug出现。如果自己不擅长写脚本可以通过chatgpt来实现,很简单的,只要把自己的需求告诉他就可以了。我们可以参考android资源的使用方式,在Android中使用资源文件都是 R.id.xxxx来引用的,那么我们是否也可以让Flutter也类似这么使用呢?如果删除了图片,更新脚本后,原来使用的地方会编译报错,这样开发人员就知道了,避免了bug产生。

dalong的博客 879

Flutter开发之——基本组件-Image(1),来一份全面的面试宝典练练手

*要想成为高级安卓工程师,必须掌握许多基础的知识。**在工作中,这些原理可以极大的帮助我们理解技术,在面试中,更是可以帮助我们应对大厂面试官的刁难。个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)[外链图片转存中…(img-2RPokEzV-1711650298180)]**要想成为高级安卓工程师,必须掌握许多基础的知识。

2301_76225520的博客 1113
上一篇: Flutter屏幕适配之一:采用与UI图等比例显示的方案,实现屏幕大小尺寸的适配
下一篇: Flutter——Dart中实现根据传入日期DateTime返回对应的星座
NNadn
博客等级 码龄10年 8粉丝 36原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值