当前位置: 首页 > news >正文

第四百四十三回

文章目录

  • 1. 概念介绍
  • 2. 思路与方法
    • 2.1 整体思路
    • 2.2 使用方法
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"自定义Action菜单"相关的内容,本章回中将介绍如何获取屏幕相关参数.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在本章回中介绍的屏幕参数主要指屏幕的尺寸、方向和亮度。这些参数在程序开发中会被用到,当然了使用频率最高的要数屏幕的尺寸。本章回中将详细介绍获取这些
参数的方法,同时分享一些相关的经验。

2. 思路与方法

2.1 整体思路

获取屏幕参数的思路就是读取屏幕的参数值,这时需要使用MediaQueryData类的成员,这些成员中包含了相关的屏幕参数值,开发人员只需要获取到这些值就可以。常
用的成员如下所示:

  • viewInsets:它表示被系统功能界面遮挡的功能区域大小,比如常见的键盘区域大小;
  • viewPadding:它表示页面最上方的状态栏和底部安全区域的大小;
  • padding:它和viewPadding功能相同,只是在细节上有差别;
  • size:它表示屏幕的大小,也就是通常说的屏幕分辨率;
    我们在上面中提到了viewPadding和padding成员在细节上有差别,主要的差别在于padding中bottom的值会在键盘弹出后变为0,而viewPadding中botttom的
    值不会变。

2.2 使用方法

有了思路后,我们介绍具体的实现方法,详细如下:

  • 通过MediaQuery的of方法获取MediaQueryData对象;
  • 在MediaQueryData对象中获取相应的成员;
  • 在成员中读取屏幕参数值;

3. 示例代码

    double statusBarHeight = MediaQuery.of(context).padding.top;double screenWidth = MediaQuery.of(context).size.width;double screenHeight = MediaQuery.of(context).size.height;

上面的示例代码中演示了如何获取屏幕的长度和宽度,其它的屏幕参数大家可以自己动手去获取。我们在这里就不演示了,我们重点说一下top对应值,它表示屏幕最上方
状态栏的高度,就是显示手机信号所在区域的高度,很多人容易把页面上方AppBar的高度与它混淆。其实它的高度值大约是AppBar的一半,比如我在自己的真机上测试
后发现top对应的值是36,而且AppBar的高度值是56。

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 屏幕参数主要存放在MediaQueryData类的成员中;
  • 获取屏幕参数时直接读取MediaQueryData类的成员值就可以;
  • 不同的屏幕参数对应的不同的成员,有些成员在功能上相同,但是细节上不同;
    看官们,与"如何获取屏幕相关参数"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

相关文章:

  • HTML1:html基础
  • 个人品牌打造IP孵化运营培训教程架构课件
  • 汽车网络安全管理
  • 【算法刷题day16】Leetcode:104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数
  • 微信小程序生命周期管理:从数据初始化到事件绑定
  • 【随笔】Git -- 高级命令(中篇)(七)
  • 【快速上手ESP32(基于ESP-IDFVSCode)】03-定时器
  • 数据结构 第六章(图)【上】
  • 使用docker-tc对host容器进行限流
  • Spring源码解析上
  • 机器学习模型——决策树
  • 【二分查找】Leetcode 二分查找
  • jdbc连SQL server,显示1433端口连接失败解决方法
  • 用html写一个爱心
  • 【随笔】Git -- 高级命令(上篇)(六)
  • php的引用
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【剑指offer】让抽象问题具体化
  • 【刷算法】从上往下打印二叉树
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Django 博客开发教程 16 - 统计文章阅读量
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • node和express搭建代理服务器(源码)
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • React-flux杂记
  • v-if和v-for连用出现的问题
  • XForms - 更强大的Form
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 工程优化暨babel升级小记
  • 爬虫模拟登陆 SegmentFault
  • 配置 PM2 实现代码自动发布
  • 手写双向链表LinkedList的几个常用功能
  • 移动端高清、多屏适配方案
  • ​什么是bug?bug的源头在哪里?
  • ​学习一下,什么是预包装食品?​
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (动态规划)5. 最长回文子串 java解决
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)为什么要选择C++
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • ... 是什么 ?... 有什么用处?
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET6实现破解Modbus poll点表配置文件
  • .NET中两种OCR方式对比
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @Builder用法
  • @ModelAttribute 注解
  • @ModelAttribute注解使用
  • @在php中起什么作用?