在实际开发的过程中,我们经常需要固定某个Widget的宽度或高度,这时我发现我该给什么值呢?不同的设备上显示结果是什么呢?带着这个问题我开始了这篇文章。
1. 官网
竟然没有。
我不知道是不是我没找到,但到目前为止我真的没找到。哪位朋友如果找到了麻烦评论里说一声。
2. 百度
文章一:
https://blog.csdn.net/u011272795/article/details/82795477
点评:
直接给出方法来做适配了,而我的目的是了解flutter自己是如何处理尺寸单位的。
但其中的一句话让我有了思路:
flutter中默认组件尺寸单位都是dp,我们还要进行px->dp的操作.除以像素密度就好了.
3. 应用
既然知道了Flutter的单位是dp,那有android开发经验的人就好办了。
一个重要的参数将起到作用:
像素密度:density
3.1 如何得到设备的像素密度?
adb shell
wm density
3.2 如何得到设备的分辨率?
adb shell
wm size
3.3 如何得到设备的dp尺寸?
根据我的测试设备:Pixel C
density: 320
size: 1800*2560
计算公式:
dp值×(density/160dpi)= px值
即:
dp值 = px值 / (density/160dpi)
size宽:
1800 / (320 / 160) = 900dp
size高:
2560 / (320 / 160) = 1280dp
最终这台设备以dp为单位的分辨率是:
900dp*1280dp
4. 解决最开始的问题
我知道了我手里的设备的尺寸是宽900dp,高1280dp。
那我会很放心大胆的指定我一个Widget的宽度或高度了。
因为,通过上面的简单方法我很清楚知道这个尺寸在另一台设备上它会有多宽或多高。