Flutter中如何让自定义组件支持响应式布局?
我在写一个 Flutter 自定义卡片组件,想让它在不同屏幕尺寸下自动调整内边距和字体大小,但试了 MediaQuery 和 LayoutBuilder 都不太顺手。有没有更简洁的方式?
比如我之前在 Web 项目里用 CSS 媒体查询就很方便,类似这样:
.card {
padding: 16px;
font-size: 16px;
}
@media (max-width: 480px) {
.card {
padding: 12px;
font-size: 14px;
}
}
Flutter 里能实现类似效果吗?还是说必须手动计算每个断点?
给你个实用的方案,先创建个responsive_utils.dart文件:
然后在组件里这样用:
这样就和CSS媒体查询差不多了,把断点逻辑都封装在工具类里,组件代码会很干净。比起每次都手动写MediaQuery确实省事多了。
要是觉得这样还麻烦,可以考虑用responsive_framework这个第三方包,它直接内置了类似CSS的响应式系统。不过我个人觉得对简单需求来说,自己封装工具类就够用了。