我正在尝试扩展放置在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):父母提供的约束条件。
答案 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")
],),
),
],
);
}