Как поместить два списка в столбец?

У меня есть два 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 непосредственно как тело, они отображаются хорошо. Я что-то пропустил?

Ответ 1

Попробуйте обернуть ListView в Expanded. Он не имеет внутренней высоты, поэтому вам нужно дать ему один.

Ответ 2

Упаковка ListView в фиксированный размер Container работала для меня.

Ответ 3

Вы должны указать ограниченную высоту, чтобы иметь возможность поместить ListView внутрь Column. Есть много способов сделать это, я перечисляю несколько здесь.

  1. Используйте Expanded для обоих списков

    Column(
      children: <Widget>[
        Expanded(child: _list1()),
        Expanded(child: _list2()),
      ],
    )
    
  2. Дайте один Expanded и другой SizedBox

    Column(
      children: <Widget>[
        Expanded(child: _list1()),
        SizedBox(height: 200, child: _list2()),
      ],
    )
    
  3. Используйте SizedBox для них обоих.

    Column(
      children: <Widget>[
        SizedBox(height: 200, child: _list1()),
        SizedBox(height: 200, child: _list2()),
      ],
    )
    
  4. Используйте Flexible, и вы можете изменить свойство flex в нем, как и Expanded

    Column(
      children: <Widget>[
        Flexible(child: _list1()),
        Flexible(child: _list2()),
      ],
    )
    
  5. Если у вас ListView достаточно короткий, чтобы уместиться в Column, используйте

    ListView(shrinkWrap: true)