如何在列中放入两个ListView?

时间:2017-06-23 07:47:07

标签: flutter

我有两个带有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直接设置为正文,它们会显示正常。我错过了什么吗?

3 个答案:

答案 0 :(得分:34)

尝试将ListView包裹在Expanded中。它没有固有的高度所以你需要给它一个。

答案 1 :(得分:1)

用固定大小ListView包装Container对我有用。

答案 2 :(得分:0)

您需要提供约束高度,以便将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)