return Card(
child: Row(
children: <Widget>[
Placeholder(
fallbackHeight: 100,
fallbackWidth: 100,
),
Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Container(height: 10, child: Container(child: Text("One"),)),
Expanded(child: Container(child: Text("Center") )),
],
)
],
),
);
在上面的代码中,我得到了错误:
I / flutter(4872):在performLayout()期间引发了以下断言: I / flutter(4872):RenderFlex子级的flex为非零值,但传入的高度限制是无界的。 I / flutter(4872):当列位于不提供有限高度限制的父项中时,例如 I / flutter(4872):在垂直滚动条中,它将尝试沿垂直轴收缩包装其子级。设置一个 I / flutter(4872):在子项上弯曲(例如,使用Expanded)表示该子项将扩展以填充剩余部分 I / flutter(4872):垂直方向上的空间。
整个代码:
class FilmItems extends StatelessWidget {
List<String> filmListList;
List<String> _getFilmList() {
var items = List<String>.generate(101, (counter) => "item $counter");
return items;
}
FilmItems() {
filmListList = _getFilmList();
}
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: filmListList.length,
itemBuilder: (BuildContext context, int index) {
return Card(
child: Row(
children: <Widget>[
Placeholder(
fallbackHeight: 100,
fallbackWidth: 100,
),
Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Container(height: 10, child: Container(child: Text("One"),)),
Expanded(child: Container(child: Text("Center") )),
],
)
],
),
);
});
}
}
怎么了?
答案 0 :(得分:0)
问题是您正在使用Expanded
,并且其任何父母的身高都很高。
解决方案取决于您要如何处理Expanded
的高度。在您的情况下,似乎您想拥有一个Row
且高度固定为Placeholder
的{{1}}。在这种情况下,您需要用与Row
相同的高度包装Placeholder
,如下所示:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("")),
body: ListView.builder(
itemCount: 3,
itemBuilder: (BuildContext context, int index) {
return Card(
child: SizedBox(
height: 100,
child: Row(
children: <Widget>[
Placeholder(
fallbackHeight: 100,
fallbackWidth: 100,
),
Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text("One"),
Expanded(child: Center(child: Text("Center"))),
],
),
],
),
),
);
}),
);
}
我删除了10
的高度Text("One")
,因为如果fontSize
较大,则文本看起来会被裁剪。我用Text("Center")
小部件包裹了Center
,我想这就是您想要实现的目标。
建议:如果Row
内的内容的高度可能比Row
高,则该内容看起来会被裁剪。如果发生这种情况,您可能要采取另一种方法。
答案 1 :(得分:-1)
在使用“列”小部件时,其父级应具有有限的高度。因此,在您的代码中,父级是一行,并且其高度也不是有限的。您需要用容器包装Column并指定一个有限的高度。
Container(
height: 500,
child: Column()
)