无法在行内展开

Dmi*_*kov 6 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")
          ],),
        ),
      ],    
    );
  }

}
Run Code Online (Sandbox Code Playgroud)

错误:

我/扑(5480):???通过渲染库捕获的异常 ????????????????????????????????????????????? ???????????? I/flutter (5480):在 performLayout() 期间抛出以下断言:I/flutter (5480):RenderFlex 子项具有非零 flex 但传入的宽度约束是无界的。I/flutter ( 5480) :当一行位于不提供有限宽度约束的父行中时,例如,如果它位于 I/flutter ( 5480) 中:水平滚动,它将尝试收缩包裹其子项水平轴。设置 I/flutter ( 5480): flex on a child (例如使用 Expanded) 表示子项要扩展以填充剩余的 I/flutter ( 5480): 水平方向的空间。I/flutter (5480):这两个指令是互斥的。如果父母要收缩包装其孩子,子 I/flutter ( 5480):不能同时扩展以适合其父级。I/flutter ( 5480):考虑将 mainAxisSize 设置为 MainAxisSize.min 并使用 FlexFit.loose 适合灵活的 I/flutter ( 5480): children(使用 Flexible 而不是 Expanded)。这将允许灵活的孩子调整 I/flutter ( 5480) 的大小:他们自己小于他们将被迫占用的无限剩余空间,并且 I/flutter ( 5480) :然后将导致 RenderFlex 收缩包装孩子而不是扩展以适应最大 I/flutter ( 5480 ):由父级提供的约束。

Rao*_*che 13

问题是你的Text约束是无界的,因为Expanded你不能把一个无界的小部件放在一个有界的(或非零弹性)中

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

    Container(
      child: Row(
        children: <Widget>[
          Flexible(
            child: Row(
              children: <Widget>[
                Text("label1"),
                Expanded(child: Text("label2")) 
              ],
            ),
          )
        ],
      ),
    )
Run Code Online (Sandbox Code Playgroud)