【Flutter】Stack的子组件堆叠问题

场景

在使用一个组件作为另一个组件的背景时,不免需要使用Stack组件将两个组件堆叠起来。但是,顶层的宽高并不一定是固定的,如果底层预留的宽高不大,就会出现顶层盖过底层的问题。

需求

  • Stack 组件需要获取上一层组件的宽高,从而改变下一层的宽高,让底层的宽高永远大于顶层。

解决方法

重复组件法

在底层重复构建顶层的组件,同时使用Opacity将重复构建的组件隐藏。适用于顶层组件简单无其他功能,比如图片之类的。同时可以去除不影响布局的参数优化一定性能。

计算法

  • 将两层使用一个StatefulWidget包裹
  • 给顶层的组件设置一个GlobalKey
  • 利用WidgetsBinding.instance.addPostFrameCallback添加构建回调
  • 回调中通过key获取顶层的大小
  • 通过setState(() {})刷新这个StatefulWidget
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值