【问题标题】:Flutter iOS - MediaQuery.of(context).size.width does not give the width in pixelFlutter iOS - MediaQuery.of(context).size.width 没有以像素为单位给出宽度
【发布时间】:2020-04-29 00:59:24
【问题描述】:

我正在编写一个新的颤振应用程序,在某些时候,我需要获取 iOS 设备的像素数。当我使用MediaQuery.of(context).size.width 时,它返回像素数除以 3 或 2,具体取决于我使用的设备。

例如,在我的 iPhone5s 上,屏幕宽度假设为 640 像素,但媒体查询返回我 320。在我的 iPhoneXs 上,宽度假设为 1125 像素,但它返回我 375。

我们如何解决这个问题?我不确定,但我听说苹果不是在使用像素而是使用点系统?可能是相关的……

【问题讨论】:

    标签: ios iphone flutter dart ios-simulator


    【解决方案1】:

    根据docs 对应MediaQuery.of(context).size

    MediaQuery.of(context).size 返回媒体的逻辑像素大小

    逻辑像素在不同设备上的视觉尺寸大致相同。物理像素是设备上实际硬件像素的大小。每个逻辑像素的物理像素数由 devicePixelRatio 描述。

    Flutter 向您显示的是您设备的逻辑像素。您可能正在寻找(或称为 640 像素和 1125 像素)是设备的物理像素

    要获取设备的物理像素,您应该尝试

    var devicePhysicalPixelWidth = MediaQuery.of(context).size.width * MediaQuery.of(context).devicePixelRatio

    简单来说, devicePhysicalPixelWidth = logical pixel width * device pixel ratio

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 1970-01-01
      • 2017-07-02
      • 2011-12-05
      • 2014-12-06
      • 2011-08-06
      • 2019-12-24
      • 1970-01-01
      • 2021-12-02
      相关资源
      最近更新 更多