dart 为SizedBox的宽度和高度声明的像素数在多个设备中不通用

ttcibm8c  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(163)

下面是声明SizedBox的高度和宽度的示例:
SizedBox(width: 40, height: 40)
在某些情况下(在其他设备上),我注意到有时尺寸溢出并导致错误。在我看来,我认为按像素数声明将在所有设备上通用,因为200像素应该是200像素,而不管设备屏幕大小。但显然我错了,那么有没有一种快速或简单的方法来修复我的错误,以确保宽度/高度在所有设备上保持通用?
使用MediaQuery.of(context).size.width的问题是,在某些情况下,每当你有一个宽屏幕或当用户在横向视图中倾斜手机时,使用MediaQuery会使宽度或高度太长&不会通过美学测试。
谢谢你的帮助!

mznpcxlj

mznpcxlj1#

请考虑使用FractionallySizedBox来设置应从所有屏幕获取的宽度/高度的百分比:

FractionallySizedBox(
  heightFactor: 0.2, // will take 20% of the screen height.
  widthFactor: 0.4, // will take 40% of the screen width.
);
yx2lnoni

yx2lnoni2#

If you want to create a condition for each screen size but avoid messy code. You should try to do it with an extension.
For example:

extension BoxWithSizes on double {
   
   double get conditional {
        return (//size of screen < 600) ? this : this - 30;
   }

}

And use it like

SizedBox(width: 30.conditional)

The thing with this is that you should do like in CSS, a different getter extension for differents components

相关问题