flutter中的单位是逻辑像素
这个逻辑像素是怎么确定的可以看这里 Flutter 大小单位详解
逻辑像素与设备像素转换
According to the size property's documentation :
The size of the media in logical pixels (e.g, the size of the screen).
Logical pixels are roughly the same visual size across devices. Physical pixels are the size of the actual hardware pixels on the device. The number of physical pixels per logical pixel is described by the devicePixelRatio.
So you would do
MediaQuery.of(context).size.width * MediaQuery.of(context).devicePixelRatio
to get the width in physical pixels.
The number of device pixels for each logical pixel for the screen this view is displayed on.
This number might not be a power of two. Indeed, it might not even be an integer. For example, the Nexus 6 has a device pixel ratio of 3.5.
Device pixels are also referred to as physical pixels. Logical pixels are also referred to as device-independent or resolution-independent pixels.
By definition, there are roughly 38 logical pixels per centimeter, or about 96 logical pixels per inch, of the physical display. The value returned by devicePixelRatio is ultimately obtained either from the hardware itself, the device drivers, or a hard-coded value stored in the operating system or firmware, and may be inaccurate, sometimes by a significant margin.
The Flutter framework operates in logical pixels, so it is rarely necessary to directly deal with this property.
When this changes,
onMetricsChanged
is called.See also:
- WidgetsBindingObserver, for a mechanism at the widgets layer to observe when this value changes.