Flutter MediaQuery.of(context).size.width来检查设备大小总是在iOS模拟器中返回相同的错误值

问题描述 投票:3回答:1

我正在使用Flutter-App,它需要在小屏幕(iPhone 5S,SE,6S,Galaxy 5S等)上调整元素的大小。

为了做到这一点,我打电话给double width = MediaQuery.of(context).size.width,并且如果该值小于750像素(iPhone 6S大小),则元素会变小。

这在设备上效果很好,但是在iOS模拟器中,无论运行在哪个模拟设备上,该值始终很小(〜375)。基本上,这会使该应用程序随后在模拟器上无法运行,因为它始终显示“小”版本。

是否有更好的方法来获取与iOS模拟器兼容的设备尺寸?还是其他适应屏幕尺寸的方法?

android ios flutter
1个回答
0
投票

我想通了!原来有“逻辑”像素(系统在这里输出)和“设备”像素,它们是通过读出两者之间的比率来计算的。

[当“像素”可以具有子像素时使用,例如从未使用过的iDevices大大提高了其实际分辨率,但是像素数未乘以相同因子时。

double logicalPixelWidth = MediaQuery.of(context).size.width;
double devicePixelRatio = MediaQuery.of(context).devicePixelRatio;
double devicePixelWidth = logicalPixelWidth * devicePixelRatio;
© www.soinside.com 2019 - 2024. All rights reserved.