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

时间:2019-08-19 14:08:34

标签: android ios flutter

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

为此,我打电话给double width = MediaQuery.of(context).size.width,如果该值小于750像素(iPhone 6S大小),则元素变小。

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

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

2 个答案:

答案 0 :(得分:1)

你可以使用

import 'dart:ui';
window.physicalSize.width; // This will return the physical pixels.

答案 1 :(得分:0)

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

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

double logicalPixelWidth = MediaQuery.of(context).size.width;
double devicePixelRatio = MediaQuery.of(context).devicePixelRatio;
double devicePixelWidth = logicalPixelWidth * devicePixelRatio;