[嗨,我正在尝试创建一个列表视图,我在其中向应用程序动态添加项目。我希望列表的高度增长到达到定义的最大高度,然后在溢出时显示滚动条。
_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
时,页面只会溢出而不是添加滚动。
似乎我找到了解决方案,这很容易。将您的ListView包裹在Flexible内,并将shrinkWrap设置为true:
...
Flexible(
child: ListView.builder(
itemCount: _items.length,
itemBuilder: (context, index) => _buildItem(_items[index]),
shrinkWrap: true,
)
),
...
如果不是解决方案,请让我知道评论中出了什么问题。