flutter屏幕适配-程序员宅基地

技术标签: 移动开发  

现在的手机品牌和型号越来越多,导致我们平时写布局的时候会在个不同的移动设备上显示的效果不同,

比如我们的设计稿一个View的大小是300px,如果直接写300px,可能在当前设备显示正常,但到了其他设备可能就会偏小或者偏大,这就需要我们对屏幕进行适配。

安卓原生的话有自己的适配规则,可以根据不同的尺寸建立不同的文件夹,系统会根据当前的设备尺寸取对应的大小的布局。而flutter本身并没有适配规则,而原生的又比较繁琐,这就需要我们自己去对屏幕进行适配。

点击直达github地址 如果有帮助,请给我个star

flutter_ScreenUtil

flutter 屏幕适配方案

github: github.com/OpenFlutter…

csdn博客 工具 介绍: blog.csdn.net/u011272795/…

使用方法:

安装依赖:

安装之前请查看最新版本

dependencies:
  flutter:
    sdk: flutter # 添加依赖 flutter_screenutil: ^0.3.0 复制代码

在每个使用的地方导入包:

import 'package:flutter_screenutil/flutter_screenutil.dart';

复制代码

初始化设置尺寸

在使用之前请设置好设计稿的宽度和高度,传入设计稿的宽度和高度(单位px) 一定在MaterialApp的home中的页面设置,以保证在每次使用之前设置好了适配尺寸:

//设置适配尺寸 (填入设计稿中设备的屏幕尺寸) 假如设计稿是按iPhone6的尺寸设计的(iPhone6 750*1334)
    ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); 复制代码

使用:

适配尺寸:

//传入设计稿的px尺寸:
适配后的宽度width: ScreenUtil().setWidth(540), 适配后的高度height: ScreenUtil().setHeight(200), 高度也根据setWidth来做适配可以保证不变形 例如: Container( width: ScreenUtil().setWidth(375), height: ScreenUtil().setHeight(200), ), 复制代码

适配字体:

ScreenUtil().setSp(28) //传入字体大小,根据系统的“字体大小”辅助选项来进行缩放 ScreenUtil().setSp(28false) //传入字体大小,不会根据系统的“字体大小”辅助选项来进行缩放 for example: Text( 'My font size is 28px and will not change with the system.', style: TextStyle( color: Colors.black, fontSize: ScreenUtil().setSp(28, false) ) ), 复制代码

其他相关api:

ScreenUtil.pixelRatio       //设备的像素密度
    ScreenUtil.screenWidth //设备宽度 ScreenUtil.screenHeight //设备高度 ScreenUtil.bottomBarHeight //底部安全区距离,适用于全面屏下面有按键的 ScreenUtil.statusBarHeight //状态栏高度 刘海屏会更高 单位px ScreenUtil.textScaleFactory //系统字体缩放比例 ScreenUtil().scaleWidth //宽度相对于设计稿放大的倍数 ScreenUtil().scaleHeight //高度相对于设计稿放大的倍数 复制代码
//导入
import 'package:flutter_screenutil/flutter_screenutil.dart'; ... @override Widget build(BuildContext context) {
                       //设置适配尺寸 (填入设计稿中设备的屏幕尺寸) 假如设计稿是按iPhone6的尺寸设计的(iPhone6 750*1334) ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); print('设备宽度:${ScreenUtil.screenWidth}'); //Device width print('设备高度:${ScreenUtil.screenHeight}'); //Device height print('设备的像素密度:${ScreenUtil.pixelRatio}'); //Device pixel density print( '底部安全区距离:${ScreenUtil.bottomBarHeight}'); //Bottom safe zone distance,suitable for buttons with full screen print( '状态栏高度:${ScreenUtil.statusBarHeight}px'); //Status bar height , Notch will be higher Unit px print( '宽度相对于设计稿放大的倍数:${ScreenUtil().scaleWidth}'); //The width is enlarged relative to the design draft print( '高度相对于设计稿放大的倍数:${ScreenUtil().scaleHeight}'); //The height is enlarged relative to the design draft print('系统的字体缩放比例:${ScreenUtil.textScaleFactory}'); return new Scaffold( appBar: new AppBar( title: new Text(widget.title), ), body: new Center( child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: <Widget>[ Row( children: <Widget>[ Container( width: ScreenUtil().setWidth(375), height: ScreenUtil().setHeight(200), color: Colors.red, child: Text( 'My width:${ScreenUtil().setWidth(375)}dp', style: TextStyle( color: Colors.white, fontSize: ScreenUtil().setSp(28, false)), ), ), Container( width: ScreenUtil().setWidth(375), height: ScreenUtil().setHeight(

转载于:https://www.cnblogs.com/ckAng/p/10077832.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aau88497/article/details/102344959

智能推荐

三分钟教你如何用Github找开源项目--值得一看!_github 网站 下载课题相关的开源代码程序。-程序员宅基地

文章浏览阅读10w+次。Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。# 按照项目名/仓库名搜索(大小写不敏感)in:name xxx # 按照README搜索(大小写不敏感)in:readme xxx# 按照description..._github 网站 下载课题相关的开源代码程序。

MAC地址表、端口安全、MAC地址偏移-程序员宅基地

文章浏览阅读1.4k次,点赞7次,收藏6次。文章目录MAC地址1.组成2.分类3.常见MAC地址4.MAC地址表MAC地址表分类2.端口安全安全MAC地址分类端口安全保护动作配置端口安全经常使用的场景MAC地址偏移出现场景如何避免MAC地址漂移检测MAC地址MAC(Media Access Control Address)地址:网络中每台设备都有一个唯一的网络标识。1.组成MAC地址为48位(6字节)前24bit是通过向IETF等机构申请用来表示厂商的代码,后24bit是厂商分配给产品的唯一数值。2.分类物理MAC地址:MAC地址的_mac地址偏移

KEIL调试正在运行的程序_keil attach-程序员宅基地

文章浏览阅读2k次。有时程序跑着跑着就飞了,但此时却没有接仿真器,不能停下来看运行状态。如果重新启动调试,会破坏现场。有没有办法attach到应用程序上调试呢?答案是肯定的。_keil attach

【JavaScript】JS执行机制--同步与异步_js 同步和异步的展示-程序员宅基地

文章浏览阅读5.6k次,点赞41次,收藏30次。## 单线程`JavaScript`语言具有单线程的特点,同一个时间只能做一件事情。这是因为`JavaScript`脚本语言是为了处理页面中用户的交互,以及操作`DOM`而诞生的。如果对某个`DOM`元素进行添加和删除,不同同时进行。应该是先添加,再删除,事件有序。单线程的特点是所有任务都需要排队进行,前一个任务结束,才会执行后一个任务。这样会导致问题:如果JS执行时间过长,这样会导致页面渲染不连贯,导致页面渲染加载阻塞。_js 同步和异步的展示

使用积分图像进行自适应二值化[Derek Bradley, Gerhard Roth, 2007]_积分二值化-程序员宅基地

文章浏览阅读3k次。忽略光照不均的影响做二值化,没想到自己毕设设计的算法竟然在07年就有人搞出来了、囧~原文地址: http://people.scs.carleton.ca/~roth/iit-publications-iti/docs/gerh-50002.pdf OpenCV源码地址: http://blog.csdn.net/qiaxi/article/details/49207243 ..._积分二值化

随便推点

keep-alive在路由中的使用_arco pro 路由keep alive-程序员宅基地

文章浏览阅读1.1k次。路由中keep-alive的使用,也就是将router-view包含在keep-alive中,这样当频繁往复点击多个router-link时,router-link对应的组件不会被频繁的创建和销毁,因为包含在keep-alive中router-view被缓存了起来。即使浏览器刷新,由keep-alive缓存的数据仍旧处于缓存状态;..._arco pro 路由keep alive

quill-better-table:赋予quill富文本编辑器强大的表格编辑功能!-程序员宅基地

文章浏览阅读1.3w次。背景接触quilljs是因为公司之前的富文本编辑器已经无法满足更多的内容生产场景,于是计划研发一款更加定制化的编辑器。经过一番调研,被quilljs强大的可扩展性,和它独有的parchment,delta的设计所吸引,选定了它(当然2W+的star也是一个重要原因)。但是“表格编辑功能”一直困扰着这个优秀的富文本编辑器,具体可从quill的第117号issue: Add support for..._quilljs 扩展

Struts1的路径映射详解_struts1 path-程序员宅基地

文章浏览阅读3.8k次,点赞2次,收藏9次。首先介绍下struts1种xml配置的相关概念:• Action 的path:ActionServlet 根据该属性来转发用户的请求,即将用户请求转发与之同名的Action 。同名的意思是:将请求的.do 后缀去掉,匹配Action 的path属性值。• Action 的name:此处的name 属性并不是Action 本身的名字,而是与Action 关联的ActionForm。因此该name 属..._struts1 path

QoS---拥塞管理、拥塞避免_qos流队列模板-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏32次。实现拥塞管理使用队列调度技术实现拥塞避免使用尾丢弃一、拥塞管理拥塞产生的场景:1、从高速率链路迁到低速率链路2、流量汇聚,从一个不满足现有带宽需求的接口转发出去通过分类和标记,将不同业务的流量报文划分在不同队列中。不同队列的报文如何从接口发出、先后顺序如何。如果出现大量的业务流量需要从同一个接口发出,如何保证高优先级的流量显出,又如何保证低优先级的流量可以顺利发出。这里就涉及到队列调度技术队列调度技术:在设备的出方向实现,利用设备的缓存形成软件队列(只在出方向存在缓存,入方向是没有缓存技术)_qos流队列模板

数据库设计--实体关系图(ERD)_er图中,实体,属性,联系分别用-程序员宅基地

文章浏览阅读10w+次,点赞53次,收藏232次。1、E-R图的定义实体关系图:简记E-R图是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。 –百度百科2、E-R的使用方法E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。实体关系图表示在信息系统中概念模型的数据存储。 –百度百科2.1E-R图表示法(Chen’s模型)_er图中,实体,属性,联系分别用

Matlab 中卷积运算傅里叶变换的一些验证_matlab傅里叶变换代替图像的卷积计算-程序员宅基地

文章浏览阅读4.8k次,点赞2次,收藏4次。对于傅里叶变换我们都知道时域的卷积为频域的乘积,但是对于离散傅里叶变换来说就存在选取区间的问题,这时使用循环卷积。稍微了解一些循环卷积知道该定理依然满足时域卷积频域相乘,但是选取区间是一个重要问题,至少是一个需要注意的问题。文章目录问题一、一维情况验证二、二维情况问题在实现图像卷积之后傅里叶变换计算的时候遇到了需要分开运算的问题,分别运算卷积图和卷积核傅里叶变换,但是二者不一样大,使用psf2otf函数,对于其具体的运作原理不是很了解。于是做了相关的验证。一、一维情况验证a = [1,2,0,_matlab傅里叶变换代替图像的卷积计算

推荐文章

热门文章

相关标签