一个Flutter widget自动适配不同UI到Web、Android

博客探讨了Flutter中如何实现Widget在不同分辨率和屏幕尺寸上的适配,区别于简单的dp适配,而是根据屏幕宽度动态调整布局。介绍了一个基于MediaQuery的实现原理,以及如何在Widget build()方法中根据宽度返回不同布局。同时提到了官方动态适配方案和国外开源解决方案。

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

上图

webUI
androidUI

不是dp适配

对的,不是对dp的适配,而是在不同的分变率,改变布局的方式。大的屏幕肯定是要合理利用空间,这样布局紧凑,不浪费空间,小的屏幕又不能让大的组件等比压缩,这样不光会变丑,还会变的更难触及,既然Flutter对web的支持,那么肯定要支持不同分辨率,适配不同布局吧,就像我们Android开发,在针对Pad的时候做一个单独的xml布局来适配一样。

实现原理

原理很简单,就是在屏幕宽度到了一定范围内,然后动态返回不同的Widget,那么拿到屏幕的宽度就是关键,其实很简单

MediaQuery.of(context).size.width

详细介绍参见官方文档MediaQuery
大致意思是说,WidgetsAppMaterialApp目前只有它们引入了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值