Flutter实战:可滚动组件布局的良好实践

本文探讨了Flutter开发中常见的可滚动组件布局问题,解释了Column与SingleChildScrollView、ListView和GridView等滚动组件的配合使用。推荐将Column包裹在限制高度的容器内,以防止高度冲突。同时,通过示例介绍了如何使用IntrinsicHeight和BoxConstraints实现弹性布局,以适应不同视口大小。需要注意的是,IntrinsicHeight可能导致较高的组件树绘制复杂度。
摘要由CSDN通过智能技术生成

初入Flutter,经常直接将根组件设为Column,不断向其中添加组件,组件堆叠到一定高度溢出屏幕,屏幕底部会显示一段很小的“乱码”,不必惊慌,它只是告诉你溢出了多少。这时希望溢出容器内容产生滚动条,然而Flutter并没有传统web那么方便,所谓一个overflow属性搞定,我们不得不给Column包裹额外一层可滚动组件作为容器。

Flutter中的可滚动组件有:SingleChildScrollView、ListView和GridView,具体每个组件的作用暂不细说,这里只要知道它们都是滚动组件,当子组件高度超过视口高度时会自动变为可滚动状态,且给子组件提供的可用高度是无限的,这点造就了常犯的典型错误一典型错误二

最稳妥的滚动组件布局实践,就是将Column与滚动组件“隔离”,给Column包裹一层限制容器,防止Column尽可能占满可用高度的特性和可滚动组件的无限高度冲突(建议先搞清楚典型错误一)。如下是一段稳健的代码,完成了弹性高度布局:

Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (BuildContext context, BoxConstraints viewportConstraints) {
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值