文章目录

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

一、推荐使用 flutter_screenutil 插件


flutter_screenutil 插件相关资料 :

  • 插件地址 : https://pub.dev/packages/flutter_screenutil
  • 插件使用案例 : https://pub.dev/packages/flutter_screenutil/example
  • 插件安装文档 : https://pub.dev/packages/flutter_screenutil/install
  • GitHub 地址 : https://github.com/OpenFlutter/flutter_screenutil
  • 中文文档 ( 强烈推荐看这个文档 ) : https://github.com/OpenFlutter/flutter_screenutil/blob/master/README_CN.md
  • 插件作者博客 : https://blog.csdn.net/u011272795/article/details/82795477

二、flutter_screenutil 插件使用


1、导入 flutter_screenutil 插件依赖

在 pubspec.yaml 中添加依赖 ;

dependencies:flutter_screenutil: ^5.0.0+2

点击右上角的 " Pub get " 按钮 , 下载该依赖 ;

导入 Dart 包后 , 可以在文件中使用该插件包的函数 ;

import 'package:flutter_screenutil/flutter_screenutil.dart';

2、 flutter_screenutil 初始化

在 MyApp 中 , 使用 ScreenUtilInit 作为最顶层的组件 , 包裹 MaterialApp 组件 ;

设置其 designSize 参数 , 用于设置设计稿的宽度和高度 ;

代码示例 :

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {/// 在 MaterialApp 组件外层包裹一层 ScreenUtilInit 组件return ScreenUtilInit(/// 设置设计稿宽高designSize: Size(750, 1334),/// 设置原本要显示的 MaterialAppbuilder: ()=>MaterialApp(),);}
}

3、 flutter_screenutil 使用 API

flutter_screenutil API 用法 :

在 750 x 1337 的设计稿中 , 获取 540 对应的宽度

ScreenUtil().setWidth(540)

也可以使用

540.w

获取相同的值 ;

API 参考 :

    ScreenUtil().setWidth(540)  (sdk>=2.6 : 540.w)   //根据屏幕宽度适配尺寸ScreenUtil().setHeight(200) (sdk>=2.6 : 200.h)   //根据屏幕高度适配尺寸(一般根据宽度适配即可)ScreenUtil().radius(200)    (sdk>=2.6 : 200.r)   //根据宽度或高度中的较小者进行调整ScreenUtil().setSp(24)      (sdk>=2.6 : 24.sp)   //适配字体ScreenUtil.pixelRatio       //设备的像素密度ScreenUtil.screenWidth   (sdk>=2.6 : 1.sw)   //设备宽度ScreenUtil.screenHeight  (sdk>=2.6 : 1.sh)   //设备高度ScreenUtil.bottomBarHeight  //底部安全区距离,适用于全面屏下面有按键的ScreenUtil.statusBarHeight  //状态栏高度 刘海屏会更高ScreenUtil.textScaleFactor //系统字体缩放比例ScreenUtil().scaleWidth  // 实际宽度设计稿宽度的比例ScreenUtil().scaleHeight // 实际高度与设计稿高度度的比例ScreenUtil().orientation  //屏幕方向0.2.sw  //屏幕宽度的0.2倍0.5.sh  //屏幕高度的50%

4、 设置字体

Text("顶部内容", style: TextStyle(fontSize: 40.sp),)

5、 设置宽高

/// 宽高是宽度的 0.5 倍 , 显示正方形
Container(width: 0.5.sw,height: 0.5.sw,color: Colors.green,
),

三、代码示例


import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';/// 使用 MediaQuery 进行全面屏适配
void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {/// 在 MaterialApp 组件外层包裹一层 ScreenUtilInit 组件return ScreenUtilInit(/// 设置设计稿宽高designSize: Size(750, 1334),/// 设置原本要显示的 MaterialAppbuilder: ()=>MaterialApp(title: 'Flutter Demo',theme: ThemeData(primarySwatch: Colors.blue,),home: HomePage(),),);}
}class HomePage extends StatelessWidget{@overrideWidget build(BuildContext context) {/// 获取当前的 padding 信息final EdgeInsets edgeInsets = MediaQuery.of(context).padding;return Container(decoration: BoxDecoration(color: Colors.white,),padding: EdgeInsets.fromLTRB(0, edgeInsets.top, 0, edgeInsets.bottom),child: Column(mainAxisAlignment: MainAxisAlignment.spaceBetween,children: [Text("顶部内容", style: TextStyle(fontSize: 40.sp),),/// 宽高是宽度的 0.5 倍 , 显示正方形Container(width: 0.5.sw,height: 0.5.sw,color: Colors.green,),Text("底部内容", style: TextStyle(fontSize: 20.sp),),],),);}
}/*ScreenUtil().setWidth(540)  (sdk>=2.6 : 540.w)   //根据屏幕宽度适配尺寸ScreenUtil().setHeight(200) (sdk>=2.6 : 200.h)   //根据屏幕高度适配尺寸(一般根据宽度适配即可)ScreenUtil().radius(200)    (sdk>=2.6 : 200.r)   //根据宽度或高度中的较小者进行调整ScreenUtil().setSp(24)      (sdk>=2.6 : 24.sp)   //适配字体ScreenUtil.pixelRatio       //设备的像素密度ScreenUtil.screenWidth   (sdk>=2.6 : 1.sw)   //设备宽度ScreenUtil.screenHeight  (sdk>=2.6 : 1.sh)   //设备高度ScreenUtil.bottomBarHeight  //底部安全区距离,适用于全面屏下面有按键的ScreenUtil.statusBarHeight  //状态栏高度 刘海屏会更高ScreenUtil.textScaleFactor //系统字体缩放比例ScreenUtil().scaleWidth  // 实际宽度设计稿宽度的比例ScreenUtil().scaleHeight // 实际高度与设计稿高度度的比例ScreenUtil().orientation  //屏幕方向0.2.sw  //屏幕宽度的0.2倍0.5.sh  //屏幕高度的50%*/

运行效果 :

四、博客资源


GitHub 地址 : https://github.com/han1202012/flutter_screen_adaption

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

  1. uni-app 对照设计稿还原不同屏幕像素适配(iPhone X)

    最近项目中需要高频度使用单位像素换算,以适配不同屏幕大小的需求,这里我以蓝湖为例,下面我给出换算步骤: 1.把蓝湖设计稿选到 ios 端,这时候页面单位变成了pt,因为我们iPhone X的屏幕和这个 ...

  2. flutter 屏幕尺寸适配 字体大小适配,android面试常用算法

    width: ScreenUtil().setWidth(375), height: ScreenUtil().setHeight(200), ), 适配字体: ScreenUtil().setSp( ...

  3. 移动端与大屏幕自适应适配方案

    vue3+cli4.x+lib-flexible+postcss-pxtorem的移动端与大屏幕适配方案 一.安装并配置相应插件 1.安装lib-flexible与postcss-pxtorem 2. ...

  4. 摩客怎么设置安卓的dp_安卓屏幕完美适配方案——独家秘笈

    一.为什么要适配 由于Android系统的开放性,任何用户.开发者.硬件厂商.运营商都可以对Android系统和硬件进行定制,修改成他们想要的样子. 但是这种"碎片化"到达什么程度 ...

  5. 安卓屏幕完美适配方案——独家秘笈

    一.为什么要适配 由于Android系统的开放性,任何用户.开发者.硬件厂商.运营商都可以对Android系统和硬件进行定制,修改成他们想要的样子. 但是这种"碎片化"到达什么程度 ...

  6. 安卓屏幕完美适配方案,成功入职网易月薪35K

    2.分辨率: 手机在横向.纵向上的像素点数总和,一般描述成 宽*高 , 即横向像素点个数*纵向像素点个数. 3.屏幕尺寸(in): 手机对角线的物理尺寸,单位 英寸(inch),一英寸大约2.54cm ...

  7. 【可视化大屏】屏幕多分辨率适配方案

    一.任意屏幕下保持16:9的比例等比缩放 https://blog.csdn.net/weixin_57756140/article/details/123681114 1.背景 数据大屏项目,需要适 ...

  8. 数据可视化大屏,屏幕多分辨率适配方案,且在任意屏幕下保持16:9的比例等比缩放

    背景 数据大屏项目,需要适配不同屏幕,且在任意屏幕下保持16:9的比例,保持显示效果一致,屏幕比例不一致两边留黑即可 分析 不同屏幕宽高比例(和设计稿16:9)相比会有两种情况: 1.更宽:(wind ...

  9. Android性能优化—屏幕适配方案

    为什么要做适配?Android碎片化 Android系统碎片化:基于Google原生系统,小米定制的MIUI.魅族定制的flyme.华为定制的EMUI等等: Android机型屏幕尺寸碎片化:5寸.5 ...

最新文章

  1. 图解 SQL,这也太形象了吧!
  2. MySQL的查询性能优化——《深究MySQL》
  3. DEDE 字符串操作常见问题
  4. mac 使用Karabiner配置键盘映射(2)-核心标签的解读
  5. 省选+NOI 第三部分 树上问题
  6. 简单好用的sshfs -- 通过ssh映射远程路径(转)
  7. activemq linux教程,Linux及Windows下ActiveMQ下载与安装教程
  8. Python爬虫系列:使用selenium+Edge查询指定城市天气情况
  9. mysql分页下表_有关Mysql分表分页问题
  10. Perl 脚本命令行传入参数
  11. [软件工程基础实验]生命游戏
  12. 用户和计算机硬盘系统的接口,硬盘接口类型,教您怎么看硬盘接口的类型
  13. SCL编写的阀门块实例
  14. 计算机电源原如何确定正常,如何判断笔记本电脑电源是否工作 要点在这里
  15. 学计算机的人可以定位找人吗,电脑如何实现查找“附近的人”?
  16. html5 按钮效果,7款外观迷人的HTML5/CSS3 3D按钮特效
  17. 云锁和悬镜服务器哪个好,安全狗、悬镜、云锁、云帮手建议用哪个比较好?
  18. 如何查看电脑操作系统及系统类型
  19. javascript 去掉html标签,js怎么去掉html标签
  20. iOS中assign和weak修饰符的区别

热门文章

  1. OD调试9—实例:深入分析代码完成软件破解
  2. 【sping揭秘】9、容器内部事件发布(二)
  3. 洛谷 P3112 [USACO14DEC]后卫马克Guard Mark
  4. 在Python中用Selenium执行JavaScript
  5. IE下a标签会触发window.onbeforeunload的问题
  6. 【SICP练习】107 练习3.8
  7. web前端——html基础笔记 NO.12{css布局模型(流动,浮动,层模型)}
  8. 第一次做安卓项目使用的开源框架列表
  9. 批量修改MSSQL架构名称
  10. 关于scrollTop为0以及解决方法