我正在编写一个新的flutter应用,在某个时候,我需要获取iOS设备的像素数。当我使用MediaQuery.of(context).size.width
时,它会返回像素数除以3或2,具体取决于我使用的设备。
例如,在我的iPhone5s上,屏幕宽度假定为640像素,但是媒体查询返回了我320。在我的iPhoneXs上,宽度假定为1125像素,但是返回了我375。
我们如何解决该问题?我不确定,但是我听说苹果不是使用像素,而是使用点系统?可能相关...
根据docs的MediaQuery.of(context).size
,
[
MediaQuery.of(context).size
返回逻辑像素的媒体大小逻辑像素在设备上的视觉尺寸大致相同。物理像素是设备上实际硬件像素的大小。每个逻辑像素的物理像素数由devicePixelRatio描述。
Flutter向您显示的是设备的逻辑像素。您可能正在寻找的(或称为640像素和1125像素)是设备的物理像素。
要获取设备的物理像素,您应该尝试
var devicePhysicalPixelWidth = MediaQuery.of(context).size.width * MediaQuery.of(context).devicePixelRatio
简单来说,logical pixel width * device pixel ratio