Flutter 使用Positioned 时异常BoxConstraints forces an infinite width.

The following assertion was thrown during performLayout():
BoxConstraints forces an infinite width.
These invalid constraints were provided to RenderSemanticsAnnotations's layout() function by the
following function, which probably computed the invalid constraints in question:
  RenderStack.performLayout (package:flutter/src/rendering/stack.dart:549:15)
The offending constraints were:
  BoxConstraints(w=Infinity, 0.0<=h<=Infinity)

错误信息是:Boxconstraints 强制了一个无约束的宽度

错误代码:

如希望控件宽度占用手机的整个宽度,可以这样设置。

同时在使用Positioned时,要注意一点:

源码注释可以看到,设置水平方向的值只有三个,left,right,width,并且最多只能同时设置两个值,同时设置三个就会出错。

高度设置也是同样的限制。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Flutter中的Positioned是一个小部件,用于在Stack中定位子部件。它允许您指定子部件在Stack中的位置和大小。Positioned小部件需要一个top、bottom、left或right属性来指定子部件相对于Stack的位置。此外,还可以使用width和height属性来指定子部件的大小。 ### 回答2: Flutter中的Positioned是一个用于定位子组件的小部件。它需要作为Stack小部件的子组件使用Positioned有两个主要属性:top、left、right和bottom,用于指定子组件在Stack中的位置。可以根据需要设置其中一个或多个属性。 将子组件放置在Stack的左上角,可以将top和left属性都设置为0。同样,将子组件放置在Stack的右下角,可以将底部和右侧属性都设置为0。 Positioned还有width和height属性,用于指定子组件在Stack中的大小。这些属性不是必需的,如果不设置它们,子组件将自动适应Stack的大小。 在使用Positioned,还可以设置子组件的布局约束(constraints)。例如,可以使用ConstrainedBox包装子组件并设置最小和最大宽度和高度。 使用Positioned可以将子组件定位到Stack的任何位置,并根据需要设置大小。例如,在开发一个带有按钮的界面,可以使用Positioned将按钮定位在屏幕的右下角,并设置适当的大小。 总之,Flutter中的Positioned是一个非常有用的小部件,可以帮助开发者灵活地定位和调整大小子组件,并创建复杂的布局效果。 ### 回答3: Flutter中的Positioned是一个用于定位子组件的Widget,它需要作为Stack的子组件来使用Positioned可以通过设置top、right、bottom和left属性来指定子组件相对于Stack的位置。这些属性的值可以是具体的像素值,也可以是相对于Stack大小的百分比。例如,设置top: 20和left: 30则表示子组件距离Stack的顶部和左边分别有20像素和30像素的距离。 当子组件被Positioned定位后,它将不受Stack剩余空间的约束,即使子组件的大小超出了Stack的范围,也可以完整显示出来。 此外,可以通过设置width和height属性来调整子组件的大小。同样地,这两个属性的值可以是具体的像素值,也可以是百分比值。例如,设置width: 100和height: 200则表示子组件的宽度为100像素,高度为200像素。 需要注意的是,使用Positioned来定位子组件需要将子组件放在Stack的子组件列表中,并且Positioned需要作为子组件的直接父组件。否则,Positioned将不起作用。 总而言之,Flutter中的Positioned是一个非常有用的组件,它可以让开发者更加灵活地定位和调整子组件的位置和大小,从而实现精确布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值