如何使用ListView将元素相互放置?

时间:2019-01-19 12:37:38

标签: flutter flutter-layout

当涉及ListView时,我很难将各个项目放在一起。

我有此代码:

def y_ODE(x,y): return [y[1], -0.5*f(x)*y[1]]

它给了我左边的结果,但是我想要右边的结果:

Layouts

我试图将ListView放在一个容器中(带有body: Column( children: [ Text('foo'), Expanded( child: ListView.builder( controller: ..., itemCount: ..., itemBuilder: ... ) ), Text('bar') ] ) , ),但是它给了我一个height: double.maxFinite

编辑 :这是我要实现的结果(在“整页”中运行代码段):

Bottom overflowed by X pixels
body {
  font-size: 18px;
  margin: 0;
  padding: 0;
}

.mobile {
  position: relative;
  width: 320px;
  margin: 0 auto;
  border: 1px solid cyan;
  max-height: 400px;
  overflow-y: scroll;
  padding-top: 41px;
}

.appbar {
  position: fixed;
  top: 0;
  width: 300px;
  background: rgba(0, 0, 0, 1);
  color: white;
  padding: 10px;
}

.text {
  background: rgba(255, 0, 0, .3);
  padding: 10px;
}

.list-view {
  background: rgba(0, 255, 0, .3);
  padding: 10px;
  min-height: 500px;
}

3 个答案:

答案 0 :(得分:1)

您必须使用CustomScrollView

CustomScrollView(
    slivers: <Widget>[
      SliverToBoxAdapter(
        child: Text("Text"),
      ),
      SliverList(
        delegate: SliverChildListDelegate( [
              Container(
                height: 200.0,
                decoration: BoxDecoration(color: Colors.orange),
              ),
              Container(
                height: 400.0,
                decoration: BoxDecoration(color: Colors.pink),
              ),
              Container(
                height: 500.0,
                decoration: BoxDecoration(color: Colors.blue),
              )
            ]),
      ),
      SliverToBoxAdapter(
        child: Text("Text"),
      ),
    ],
  ) 

请注意,您可以使用SliverChildListDelegate或SliverChildBuilderDelegate

答案 1 :(得分:0)

尝试这个

ExpandableRecyclerAdapter<T>.ViewHolder

这段代码对我有用。

答案 2 :(得分:0)

您可以将顶部和底部的foo和bar添加为列表的第一项和最后一项。 init_app将有ListView个项目。

list.length + 2