一般我們在android,ios中都有自己的尺寸,如:dp,pt
但是在flutter中寫尺寸是沒有單位的,如:
SizedBox(height: 736,width: 375,child: Container(color: Colors.lightBlueAccent) )
實際上它的尺寸當然是有的, 在不同設備中它與 devicePixelRatio 屬性有關,通過此屬性得到一個邏輯像素占用多少個實際像素,根據檔案(https://api.flutter.dev/flutter/dart-ui/Window/devicePixelRatio.html)有幾點需要注意:
1. 很少需要修改這個值
2. 這個值來自設備,可能會不準確
我用模擬器(下面串列中全部都是)來做測驗,資訊如下:
| 螢屏英寸 | 解析度 | 實測寬度 | ppi | devicePixelRatio |
| android 5寸 | 1080*1920 | 412 | 420 | 2.625 |
| iPhone8+ 5.5寸 | 1080*1920 | 414 | 401 | 3 |
| iPhoneXr 6.1寸 | 828 * 1792 | 414 | 326 | 2 |
| iPhone8 4.7寸 | 750 * 1334 | 375 | 326 | 2 |
| iPhone7+ 5.5寸 | 1080 * 1920 | 414 | 401 | 3 |
| iPhoneX 5.8 | 2436×1125 | 375 | 458 | 3 |
| iPhone 11 | 1792 x 828 像素解析度 | 414 | 326 ppi | 2 |
實測寬度:在Flutter中,一個SizedBox的寬度剛好撐滿螢屏寬度的數值
結論:
除了 iPhone8+,iPhone7+ 之外,其它的 : 解析度寬度 = devicePixelRatio * 實測寬度
懷疑 iPhone8+,7+ 的模擬器應該是Flutter存在BUG. 它的解析度不是上面表格中的 1080 * 1920
內部的資料:window.physicalSize.width = 1242 , MediaQuery.of(context).size.width = 414
其它朋友寫的文章 ,比較有幫助
https://www.cnblogs.com/ckAng/p/10077832.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/15196.html
標籤:AI
下一篇:安卓APP的http訪問權限
