[译] Flutter —— 根据不同屏幕尺寸高效的适配 UI

本文介绍了如何在Flutter中使用SizeConfig类进行屏幕尺寸和UI元素大小的动态计算,包括处理刘海屏和安全区域(SafeArea)。作者分享了如何初始化SizeConfig并在HomeScreen中应用,以及如何适配文字。附有GitHub代码链接和系统化学习资源推荐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 的样子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值