如何动态增加列表的高度并在达到最大高度后滚动?

问题描述 投票:0回答:1

[嗨,我正在尝试创建一个列表视图,我在其中向应用程序动态添加项目。我希望列表的高度增长到达到定义的最大高度,然后在溢出时显示滚动条。

_buildPage() {
  return Container(
    width: widget.width,
    constraints: BoxConstraints(
      maxHeight: widget.maxHeight,
    ),
    child: Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      mainAxisSize: MainAxisSize.min,
      children: <Widget>[
        _buildTitle(),
        _buildAddBump(),
        ListView.builder(
          itemCount: _items.length,
          itemBuilder: (context, index) => _buildItem(_items[index]),
        ),
      ],
    ),
  );
}

这当然不起作用,因为ListView需要预先定义的高​​度。但是,将ListView包裹在Expanded中将占据所有剩余的高度,并且ListView将处于maxHeight,即使其中的项目不需要高度也是如此。

我已经尝试过将这些项放在带有SingleChildScrollView的儿童中的Column中,但这似乎无济于事。当我添加的物品超过高度不能容纳时,小部件就会溢出。有没有一种方法可以给列表赋予最大高度限制,并告诉列表取其内容的高度直到达到最大高度?

UPDATE:

我试图将shrinkWrap: true添加到ListView,但仍无法正常工作。页面呈现无错误,并且ListView的高度随添加项的增加而增加,但是当高度超过maxHeight时,页面只会溢出而不是添加滚动。

flutter dart flutter-layout
1个回答
1
投票

似乎我找到了解决方案,这很容易。将您的ListView包裹在Flexible内,并将shrinkWrap设置为true:

...
Flexible(
  child: ListView.builder(
    itemCount: _items.length,
    itemBuilder: (context, index) => _buildItem(_items[index]),
    shrinkWrap: true,
  )
),
...

如果不是解决方案,请让我知道评论中出了什么问题。

© www.soinside.com 2019 - 2024. All rights reserved.