Ответ 1
Попробуйте обернуть ListView
в Expanded
. Он не имеет внутренней высоты, поэтому вам нужно дать ему один.
У меня есть два ListView с ExpansionTiles, которые я бы хотел разместить один за другим внутри столбца, в котором есть некоторые другие виджеты. Это мой код,
@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 непосредственно как тело, они отображаются хорошо. Я что-то пропустил?
Попробуйте обернуть ListView
в Expanded
. Он не имеет внутренней высоты, поэтому вам нужно дать ему один.
Упаковка ListView
в фиксированный размер Container
работала для меня.
Вы должны указать ограниченную высоту, чтобы иметь возможность поместить 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)