【问题标题】:Get physical size of screen in flutter在颤动中获取屏幕的物理尺寸
【发布时间】:2020-04-29 15:40:15
【问题描述】:

我正在构建一个颤振应用程序,它需要以厘米/英寸为单位精确测量屏幕。

根据docs

根据定义,物理显示器每厘米大约有 38 个逻辑像素,或每英寸大约有 96 个逻辑像素。 devicePixelRatio 返回的值最终是从硬件本身、设备驱动程序或存储在操作系统或固件中的硬编码值获得的,并且可能不准确,有时会有很大的差距。

我曾尝试在我的应用程序中使用这些比率,但它们甚至不接近。

有没有办法准确计算屏幕的尺寸?

【问题讨论】:

  • 我相当肯定这是唯一的方法,因为对于 Java Android 开发的this similar question 的答案。但是为什么你甚至需要知道这些信息呢?
  • @Herohtar 该应用程序有一个“测试”部分,需要知道小部件的实际大小。同样,您给出的示例不会产生准确的结果。感谢您的尝试
  • 我知道结果不准确,但我是说估计屏幕尺寸的唯一方法确实是您已经知道的方法。没有什么可以为您提供绝对准确的物理尺寸。您可以获得的唯一准确尺寸是像素数。
  • 是的,这似乎是一个死胡同......谢谢你的澄清

标签: flutter dart


【解决方案1】:

Flutter 的像素坐标以逻辑像素而不是物理像素给出。不过MediaQuery会给你转化率。

var mediaQuery = MediaQuery.of(context);
var physicalPixelWidth = mediaQuery.size.width * mediaQuery.devicePixelRatio;
var physicalPixelHeight = mediaQuery.size.height * mediaQuery.devicePixelRatio;

(请注意,此代码只能在BuildContext 对象可用的地方运行,例如build 方法或StatefulWidget 的伴侣State 类。)

【讨论】:

  • 这将给出像素数量,而不是实际大小。
  • @ShaiMenzin 即使在原生 Android 中也没有可靠的方法来获取屏幕的物理尺寸,更不用说 Flutter。 A few methods exist,但他们知道某些设备返回不正确尺寸的问题。否则,您能期望的最好结果就是将物理像素尺寸与设备的已知像素密度进行比较。
  • (原生 iOS 更容易使用,因为 iOS 设备的类型相对较少,因此与其尝试找到一种以编程方式计算它的方法,不如硬编码一个查找表已知设备尺寸。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 2012-09-17
  • 2012-01-05
  • 1970-01-01
  • 2019-06-01
  • 2023-04-06
相关资源
最近更新 更多