
Mediaquery注意:无特殊说明,Flutter版本及Dart版本如下:
Flutter版本: 1.12.13+hotfix.5@H_403_10@Dart版本: 2.7.0@H_403_10@
通常情况下,不会直接将Mediaquery当作一个控件,而是使用Mediaquery.of获取当前设备的信息,用法如下:
var data = Mediaquery.of(context);此方式必须放在Mediaquery作用域内,否则会抛出异常,MaterialApp和WidgetsApp都引入了Mediaquery,并且随着屏幕的变化而导致重建,比如旋转屏幕、d出输入框等。
MediaqueryDataMediaqueryData是Mediaquery.of获取数据的类型。说明如下:
| 属性 | 说明 |
|---|---|
| size | 逻辑像素,并不是物理像素,类似于AndroID中的dp,逻辑像素会在不同大小的手机上显示的大小基本一样,物理像素 = size*devicePixelRatio。 |
| devicePixelRatio | 单位逻辑像素的物理像素数量,即设备像素比。 |
| textScaleFactor | 单位逻辑像素字体像素数,如果设置为1.5则比指定的字体大50%。 |
| platformBrightness | 当前设备的亮度模式,比如在AndroID PIE手机上进入省电模式,所有的App将会使用深色(dark)模式绘制。 |
| vIEwInsets | 被系统遮挡的部分,通常指键盘,d出键盘,vIEwInsets.bottom表示键盘的高度。 |
| padding | 被系统遮挡的部分,通常指“刘海屏”或者系统状态栏。 |
| vIEwpadding | 被系统遮挡的部分,通常指“刘海屏”或者系统状态栏,此值独立于padding和vIEwInsets,它们的值从Mediaquery控件边界的边缘开始测量。在移动设备上,通常是全屏。 |
| systemGestureInsets | 显示屏边缘上系统“消耗”的区域输入事件,并阻止将这些事件传递给应用。比如在AndroID Q手势滑动用于页面导航(ios也一样),比如左滑退出当前页面。 |
| physicalDepth | 设备的最大深度,类似于三维空间的Z轴。 |
| alwaysUse24HourFormat | 是否是24小时制。 |
| accessibleNavigation | 用户是否使用诸如TalkBack或VoiceOver之类的辅助功能与应用程序进行交互,用于帮助视力有障碍的人进行使用。 |
| invertcolors | 是否支持颜色反转。 |
| highContrast | 用户是否要求前景与背景之间的对比度高, iOS上,方法是通过“设置”->“辅助功能”->“增加对比度”。 此标志仅在运行iOS 13的iOS设备上更新或以上。 |
| disableAnimations | 平台是否要求尽可能禁用或减少动画。 |
| boldText | 平台是否要求使用粗体。 |
| orIEntation | 是横屏还是竖屏。 |
padding、vIEwpadding和vIEwInsets的区别如下:
SafeArea控件就是通过Mediaquery.of来实现的,平板和手机的(或者横屏和竖屏)布局可能是不一样的,比如如下布局:
布局代码如下:
var screenSize = Mediaquery.of(context).size;if(screenSize.wIDth>oneColumnLayout){ //平板布局}else{ //手机布局}oneColumnLayout表示一列布局的宽度。
很多App都有一个功能就是调节字体大小,通过Mediaquery来实现,实现如下:
@overrIDe Widget build(BuildContext context) { var _data = Mediaquery.of(context).copyWith(textScaleFactor: 2.0); return Scaffold( appbar: Appbar( Title: Text('老孟'),),body: Mediaquery( data: _data,child: Text('字体变大'),); }字体变大了一倍。
交流如果你对Flutter还有疑问或者技术方面的疑惑,欢迎加入Flutter交流群(微信:laomengit)。
同时也欢迎关注我的Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容。
推荐一个Flutter学习地址:http://laomengit.com 里面包含150多个组件的详细用法。
总结以上是内存溢出为你收集整理的Flutter 强大的MediaQuery控件全部内容,希望文章能够帮你解决Flutter 强大的MediaQuery控件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)