You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中的计量单位是什么?与dp、pt的换算及计算方式

Flutter 中的计量单位:和 dp/pt 的关系及换算方法

嘿,从Android或iOS转Flutter的开发者几乎都会碰到这个问题!咱们直接说重点:

Flutter里代码中写的16.0、23.0这类数值,对应的是逻辑像素(Logical Pixel)——这是Flutter专为跨平台适配设计的设备无关单位,和你熟悉的dp、pt本质上是对齐的:

  • 对于Android开发者:1 Flutter逻辑像素 = 1 dp
    你完全可以把Flutter里的数值直接当成dp来用,比如SizedBox(height: 16.0)就是16dp的高度,视觉效果和Android原生开发完全一致。毕竟dp的设计目标就是让UI在不同密度的Android设备上保持一致,这和Flutter逻辑像素的初衷一模一样。

  • 对于iOS开发者:1 Flutter逻辑像素 = 1 pt
    iOS的pt本身就是设备无关的单位,Flutter的逻辑像素和它完全等价。比如TextStyle(fontSize: 23.0)就是23pt的字体大小,和iOS原生的效果对齐。

关于尺寸计算的补充

你提到的1 pt = 1/72英寸、1 dp = 1/160英寸,其实是对应平台的物理尺寸定义:

  • 在Android设备上,1 Flutter逻辑像素(即1dp)的物理尺寸就是1/160英寸;
  • 在iOS设备上,1 Flutter逻辑像素(即1pt)的物理尺寸就是1/72英寸;

Flutter会自动根据设备的**像素密度(DPR)**把逻辑像素转换成屏幕上的物理像素,不用咱们手动计算。如果确实需要和物理像素转换,可以通过以下方式获取DPR:

double dpr = MediaQuery.of(context).devicePixelRatio;
// 物理像素 = 逻辑像素 × DPR
double physicalPixel = 1.0 * dpr;

另外提一句:Flutter里没有Android的sp单位,但逻辑像素已经自动适配了系统的字体缩放设置,所以设置字体大小时直接用逻辑像素就好,效果和Android的sp一样。

内容的提问来源于stack exchange,提问作者Khánh Vũ Đỗ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:03:39