我有两个带有ExpansionTiles的ListView,我希望一个接一个地放在一个列中,其中首先包含一些其他Widgets。 这是我的代码,
@override
Widget build(BuildContext context) {
// TODO: implement build
return new Scaffold(
appBar: new AppBar(
title: new Text("Project Details"),
backgroundColor: Colors.blue[800]),
body:
new Padding(padding: new EdgeInsets.all(10.0),
child: new Column(children: <Widget>[
new Text(project.name, style: new TextStyle(
fontWeight: FontWeight.bold,
color: Colors.blue[700],
fontSize: 15.0
)),
new RowMaker("District", project.district),
new RowMaker("River", project.river),
new RowMaker("Tac Approved", project.tacApproved),
new RowMaker("Func Sanctioned", project.fundSanctioned),
new Row(children: <Widget>[
new FlatButton(onPressed: null,
color: Colors.blue,
child: new Text("Gallery"),
textColor: Colors.white,),
new FlatButton(onPressed: null,
color: Colors.blue,
child: new Text("Upload Images"),
textColor: Colors.white),
new FlatButton(
onPressed: null,
color: Colors.blue,
child: new Text("Update"),
textColor: Colors.white),
],),
new ListView(children: getSfListTiles()),
new ListView(children: getWorkStatementTiles())
]
,
)
,
)
);
}
使用它,小部件正文显示为空白。如果我将ListView直接设置为正文,它们会显示正常。我错过了什么吗?
答案 0 :(得分:34)
尝试将ListView
包裹在Expanded
中。它没有固有的高度所以你需要给它一个。
答案 1 :(得分:1)
用固定大小ListView
包装Container
对我有用。
答案 2 :(得分:0)
您需要提供约束高度,以便将ListView
放在Column
内。这样做的方法有很多,这里我列出的很少。
对两个列表都使用Expanded
Column(
children: <Widget>[
Expanded(child: _list1()),
Expanded(child: _list2()),
],
)
给一个Expanded
和另一个SizedBox
Column(
children: <Widget>[
Expanded(child: _list1()),
SizedBox(height: 200, child: _list2()),
],
)
同时使用SizedBox
。
Column(
children: <Widget>[
SizedBox(height: 200, child: _list1()),
SizedBox(height: 200, child: _list2()),
],
)
使用Flexible
,您可以在其中更改flex
属性,就像Expanded
Column(
children: <Widget>[
Flexible(child: _list1()),
Flexible(child: _list2()),
],
)
如果您的ListView
足够短,无法容纳Column
,请使用
ListView(shrinkWrap: true)