dart 获取抖动中的屏幕物理尺寸

x8goxv8g  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(107)

我正在构建一个flutter应用程序,需要精确测量屏幕的厘米/英寸。
根据docs
根据定义,物理显示器的每厘米大约有38个逻辑像素,或者每英寸大约有96个逻辑像素。devicePixelRatio返回的值最终从硬件本身、设备驱动程序或存储在操作系统或固件中的硬编码值获得,并且可能不准确,有时会有很大的误差。
我尝试在我的应用程序中使用这些比率,但它们甚至不接近。
有没有办法精确计算屏幕的尺寸?

lstz6jyr

lstz6jyr1#

Flutter的像素坐标以逻辑像素而不是物理像素给出。但是,MediaQuery将为您提供转换率。

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

(Note这段代码只能在BuildContext对象可用的地方运行,例如build方法或StatefulWidget的同伴State类。

oxcyiej7

oxcyiej72#

您可以使用MediaQuery来检索这些字段。

final size = MediaQuery.sizeOf(context);
final pixelRatio = MediaQuery.devicePixelRatioOf(context);

// Size in logical pixels.
final width1 = size.width;
final height1 = size.height;

// Size in physical pixels.
final width2 = size.width * pixelRatio;
final height2 = size.height * pixelRatio;

相关问题