扑94:第一次见MediaQuery
MediaQuery一直存在于WidgetsApp和MaterialApp中。MediaQuery是继承自InheritedWidget的一个独立的小部件,但它通常通过MediaQuery.of(context)获取相关信息。
当相关信息发生变化时,比如屏幕旋转,屏幕中的Widget会重新构建,保持最新状态;我们可以通过MediaQuery构造函数和提供的静态方法手动设置相应的相关信息;
MediaQueryData包含媒体的相关信息;一般通过MediaQuery.of(context)获取;
Size是介质的大小,以逻辑像素为单位;
DevicePixelRatio是每英寸的像素;与设备的物理像素有关,与横竖屏无关;
方向是横屏和竖屏,方向.横向是横屏,方向.纵向是竖屏;
TextScaleFactor是
每个逻辑像素在字体中的像素数理解为字体的像素比;注意,将默认字体像素每英寸设置为标准的1.2倍后,设备系统的字体大小进行了调整,其1.2倍仍然是在标准字体大小的基础上扩大了1.2倍;
PlatformBrightness是当前设备的亮度模式;注意,调整屏幕亮度不会改变这种模式,这与目前系统支持的暗模式和亮模式有关;
AlwaysUse24HourFormat是当前设备是否为24小时制;
AccessibleNavigation是指是否使用TalkBack或VoiceOver等辅助功能与应用程序进行交互,以辅助视障人士;
InvertColors是是否使用颜色反转,主要用于iOS设备;
HighContrast是用户是否要求前景和背景的高对比度,主要用于iOS设备;
DisableAnimations是平台是否要求禁用或减少动画;
BoldText表示平台是否需要粗体;
填充是屏幕的内边距,一般是刘海儿屏或异形屏被系统遮挡的部分的边距;
Viewinserts是键盘弹出时的屏幕边距,其中viewInsets.bottom是键盘的高度;
SystemGestureInsets是手势边距,比如Android Q后向左滑动关闭页面;
ViewPadding理解为视图的内边距,是屏幕被刘海儿屏或异形屏遮挡的部分,从MediaQuery边界的边缘开始计算;该值保持不变;比如屏幕底部的软键盘,可能会覆盖和占用同样需要底部填充的区域,所以不会影响这个值;
PhysicalDepth是设备的物理层面,暂时没有想到对应的应用场景;
当试图获得其他子部件大小时,有两点需要注意。首先,应该设置一个GlobalKey来获取当前位置,并且该键应该是唯一的。其次,通过GlobalKey()获取BuildContext的上下文环境。currentContext,从而获得相应的大小;
MediaQuery案例尝试
对一些MediaQueryData的配菜应用和理解不够深入;如有错误,请多指教!