我试图使用Flutter来适应某个特定平板电脑的尺寸,但这让我感到疲惫不堪。
该平板电脑是三星Galaxy Tab S5e,屏幕分辨率为2560x1600。
当我使用以下代码让Flutter返回屏幕尺寸时:
print("Size W is ${MediaQuery.of(context).size.width}");
print("Size H is ${MediaQuery.of(context).size.height}");
我得到的是:
Size W is 1137.7777777777778
Size H is 711.1111111111111
然后,从这个答案中我学到了使用以下方法:
var pixRatio = MediaQuery.of(context).devicePixelRatio;
现在我可以使用以下方式获取正确的值:
print("Corrected size W is ${MediaQuery.of(context).size.width * pixRatio}");
print("Corrected size H is ${MediaQuery.of(context).size.height * pixRatio}");
并获得:
Corrected size W is 2560.0
Corrected size H is 1600.0
问题在于,每次我想把带有尺寸的小部件,如Container
、Image
、指定文本大小
等放在屏幕上时,我都要使用类似的技巧。
Container(
width: 100 / pixRatio,
height: 200 / pixRatio,
),
如果我不包含/pixRatio
修正,它会绘制不正确,并且我会得到很多像素溢出..
那是将小部件放在屏幕上以正确尺寸的唯一方法吗?我的意思是说,我真的需要每次在宽度和高度上添加/pixRatio
修正吗?
对我来说听起来不太实用。