Flutter Container设置 width 无效

布局组件和容器组件

容器类Widget和布局类Widget都作用于其子Widget,不同的是:

  • 布局类Widget一般都需要接收一个widget数组(children),他们直接或间接继承自(或包含)MultiChildRenderObjectWidget ;而容器类Widget一般只需要接收一个子Widget(child),他们直接或间接继承自(或包含)SingleChildRenderObjectWidget。
  • 布局类Widget是按照一定的排列方式来对其子Widget进行排列;而容器类Widget一般只是包装其子Widget,对其添加一些修饰(补白或背景色等)、变换(旋转或剪裁等)、或限制(大小等)
BoxContraints机制
  1. minWidth maxWidth minHeight maxHeight
    父组件使用 BoxConstraints 来约束子组件可以显示的最小/最大尺寸。如果 Container 的 width/height 不在 constraints 的范围内的时候,显示的尺寸会被强制计算成一个符合 constraints 要求的值,而不再使用 Container 初始化时设定的宽高。
  2. 通俗点说子组件的 width/height是由父组件和自身一起决定的。子组件的width/height要设置在父组件的范围之内。
布局组件 Row Column

Row/Column 是准备用来做布局的,虽然它们也要遵守上面的 BoxContraints 机制,但是是 “不可见” 的,它们为 Container 设定的尺寸约束是宽松的
minWidth 0
maxWidth 屏幕宽度
minHeight 0
maxHeiight 无穷大

解决办法

使用 Row/Column 以后,Container 上配置的 width/height 属性落在了有效范围内,width/height 属性都生效了。

参考

Flutter Container 宽高计算问题
尺寸限制类容器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值