2、Flutter Tips - MediaQuery;

MediaQuery

  MediaQuery可以建立媒体查询解析给定的子树。

  例如,要了解当前媒体的大小(例如,包含您的应用程序的窗口),您可以从MediaQuery.ofMediaQuery.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值:paddingviewInsets。这些值反映了设备的配置,并被许多顶级小部件使用,如SafeAreaCupertinoMaterial scaffold小部件。填充值定义可能不完全可见的区域,例如iPhone X上的显示“凹口”。viewInsets值定义根本不可见的区域,通常是因为它们被设备的键盘遮挡。

  viewInsetspadding值是独立的,它们都是从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:平台是否要求尽可能禁用或减少动画。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值