MediaQuery
MediaQuery可以建立媒体查询解析给定的子树。
例如,要了解当前媒体的大小(例如,包含您的应用程序的窗口),您可以从MediaQuery.of:MediaQuery.of(context).size返回的ediaQueryData中读取MediaQueryData.size属性。
使用MediaQuery.of查询当前媒体将导致您的窗口小部件在MediaQueryData更改时自动重建(例如,如果用户旋转其设备)。
如果MediaQuery没有在范围内,则MediaQuery.of方法将抛出异常,除非将nullOk参数设置为true,在这种情况下它返回null。
构造方法
const MediaQuery({Key key, @required MediaQueryData data, @required Widget child })
常量构造函数:创建一个向其子Widget提供MediaQueryData的窗口小部件。
factory MediaQuery.removePadding({Key key, @required BuildContext context, bool removeLeft: false, bool removeTop: false, bool removeRight: false, bool removeBottom: false, @required Widget child })
工厂构造函数:创建一个新的MediaQuery,它继承自给定上下文的环境MediaQuery,但删除指定的填充。
factory MediaQuery.removeViewInsets({Key key, @required BuildContext context, bool removeLeft: false, bool removeTop: false, bool removeRight: false, bool removeBottom: false, @required Widget child })
工厂构造函数:创建从给定上下文继承环境MediaQuery的新MediaQuery,但删除指定的视图insets。
静态方法
static MediaQueryData of(BuildContext context, { bool nullOk = false })
给定的上下文的最近实例的数据。 可以使用此功能查询屏幕方向的大小。当该信息发生变化时,小部件将被安排重建,使小部件保持最新状态。
MediaQueryData media = MediaQuery.of(context);
MediaQueryData
关于一个媒体(例如,window)的信息。例如,MediaQueryData.size属性包含当前窗口的宽度和高度。
要获取给定BuildContext的当前MediaQueryData,使用MediaQuery.of函数。例如,要获取当前窗口的大小,请使用MediaQuery.of(context).size。
MediaQueryData包含两个EdgeInsets值:padding和viewInsets。这些值反映了设备的配置,并被许多顶级小部件使用,如SafeArea和Cupertino和Material scaffold小部件。填充值定义可能不完全可见的区域,例如iPhone X上的显示“凹口”。viewInsets值定义根本不可见的区域,通常是因为它们被设备的键盘遮挡。
viewInsets和padding值是独立的,它们都是从MediaQuery小部件的边界测量的。 WidgetsApp创建的顶级MediaQuery的边界与包含该应用程序的窗口相同。
构造方法
MediaQueryData.fromWindow(ui.Window window);
基于给定窗口为媒体查询创建数据
属性
- Size size :逻辑像素中的媒体大小(例如,屏幕的大小)。
- double devicePixelRatio :每个逻辑像素的设备像素数。 这个数字可能不是两个人的权力。 实际上,它甚至可能不是整数。 例如,Nexus 6的设备像素比为3.5。
- double textScaleFactor:每个逻辑像素的字体像素数。
- EdgeInsets viewInsets:应用程序可以呈现的显示矩形每一侧的物理像素数,但操作系统可能会放置系统UI,例如键盘,完全遮盖任何内容。
- EdgeInsets padding:应用程序可以呈现的显示矩形每一侧的物理像素数,但可能被系统UI(例如系统通知区域)部分遮挡,或者显示器中的物理入侵(例如电视上的过扫描区域) 屏幕或手机传感器外壳)。如果你使用了这个填充(例如,通过构建一个小部件来封装或在其布局中考虑这个填充,以便子节点不再暴露给这个填充),你应该通过插入为小部件树中的后续后代删除这个填充 使用
MediaQuery.removePadding工厂的新MediaQuery小部件。 - bool alwaysUse24HourFormat:格式化时间时是否使用24小时格式。 此标志的行为在不同平台上有所不同: 在Android上,此标志直接从名为“使用24小时格式”的用户设置报告。 它适用于应用程序使用的任何语言环境,无论是系统范围的语言环境还是应用程序设置的自定义语言环境。 - 在iOS上,当设置了名为“24小时时间”的用户设置或系统范围的语言环境默认使用24小时时,此标志设置为true格式。
- bool accessibleNavigation:用户是否使用TalkBack或VoiceOver等辅助功能服务与应用程序进行交互。如果此设置为true,则应禁用超时等功能或增加最小持续时间。
- bool invertColors:设备是否反转平台的颜色。此标志目前仅在iOS设备上更新。
- bool disableAnimations:平台是否要求尽可能禁用或减少动画。