static double screenWidth;
static double screenHeight;
static double blockSizeHorizontal;
static double blockSizeVertical;
}
我们需要写一个构造函数去初始化这些属性:
class SizeConfig {
static MediaQueryData _mediaQueryData;
static double screenWidth;
static double screenHeight;
static double blockSizeHorizontal;
static double blockSizeVertical;
void init(BuildContext context) {
_mediaQueryData = MediaQuery.of(context);
screenWidth = _mediaQueryData.size.width;
screenHeight = _mediaQueryData.size.height;
blockSizeHorizontal = screenWidth / 100;
blockSizeVertical = screenHeight / 100;
}
}
然后就是要在你的 home screen 里初始化 SizeConfig。
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
SizeConfig().init(context);
…
}
}
然后我们就可以使用 SizeConfig 里的属性去定义你的 Container 的宽高。
Widget build(BuildContext context) {
return Center(
child: Container(
height: SizeConfig.blockSizeVertical * 20,
width: SizeConfig.blockSizeHorizontal * 50,
color: Colors.orange,
),
);
}
最后,在不同的屏幕上,矩形的宽都是屏幕宽的 50%,矩形的高都是屏幕高的 20%。
下面就是矩形显示在 iPhone 5s 和 iPhone XS Max 的样子。