行内无法扩展

时间:2019-08-01 09:36:47

标签: flutter

我正在尝试扩展放置在Row中的文本小部件。但是我遇到了错误。

代码:

class MainContainer extends StatelessWidget
{
  @override
  Widget build(BuildContext context)
  {
    return Column (
      children: <Widget>[
        Container(

        ),
        Container(
          child: Row(
            children: <Widget>[
            Row(
              children: <Widget>[
              Text("label1"),
              Expanded(child: Text("label2")) // Problem is here

            ],)

          ],),

        ),
        Container(
          child: Row(children: <Widget>[
            Text("Some Text")
          ],),
        ),
      ],    
    );
  }

}

错误:

  

I / flutter(5480):渲染库引起的异常CA ══════════════════════════   I / flutter(5480):在performLayout()期间引发了以下断言:   I / flutter(5480):RenderFlex子级的flex为非零值,但传入的宽度限制是不受限制的。   I / flutter(5480):如果行位于不提供有限宽度约束的父级中,例如,如果行位于   I / flutter(5480):水平滚动,它将尝试沿水平轴收缩包装其子级。设置一个   I / flutter(5480):在子级上弯曲(例如,使用Expanded)表示该子级将扩展以填充剩余部分   I /颤振(5480):水平方向上的间隔。   I / flutter(5480):这两个指令互斥。如果父母要包裹孩子,孩子   I / flutter(5480):无法同时扩展以适合其父级。   I / flutter(5480):考虑将mainAxisSize设置为MainAxisSize.min并使用FlexFit.loose适合弹性   I / flutter(5480):儿童(使用“灵活”而不是“扩展”)。这将允许灵活的孩子调整大小   I / flutter(5480):将自身缩小到否则将被迫占用的无限剩余空间,并且   I / flutter(5480):然后将使RenderFlex收缩包装子项,而不是扩展以适合最大   I / flutter(5480):父母提供的约束条件。

2 个答案:

答案 0 :(得分:2)

问题是您的Text约束由于Expanded而不受限制,因此,您不能将无边界的窗口小部件放到有边界的一个(或非零弹性)中

解决方案只是将父Row放在flex小部件(Flexible / Expanded)中

    Container(
      child: Row(
        children: <Widget>[
          Flexible(
            child: Row(
              children: <Widget>[
                Text("label1"),
                Expanded(child: Text("label2")) 
              ],
            ),
          )
        ],
      ),
    )

答案 1 :(得分:1)

您的第二行应位于Expanded中,因为您需要为其设置宽度。因此,您会收到width constraints are unbounded错误。 您的代码应为

@override
  Widget build(BuildContext context) {
    return Column (
      children: <Widget>[
        Container(

        ),
        Container(
          child: Row(
            children: <Widget>[
              Expanded(
                child: Row(
                  children: <Widget>[
                    Text("label1"),
                    Expanded(child: Text("label2")) // Problem is here

                  ],),
              )

            ],),

        ),
        Container(
          child: Row(children: <Widget>[
            Text("Some Text")
          ],),
        ),
      ],
    );
}