Flutter - 另一个Listview内的Listview.builder
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter - 另一个Listview内的Listview.builder相关的知识,希望对你有一定的参考价值。
我希望我的屏幕可以滚动,所以我将所有内容都放在Listview中。
现在我想在里面显示另一个Listview来显示List的详细信息。当我尝试这个时会抛出一个错误 - “必须将扩展的小部件放在Flex小部件中。”
在shrinkwrap: true
中添加listview.builder
并删除最顶部的container
或用column
替换它。
在listview.builder中添加shrinkWrap: true, physics: ScrollPhysics(),
,在这种情况下listview.builder需要扩展父级。 physics: ScrollPhysics()
将允许它保持其状态而不会滚动回到第一项。此外,如果您不希望用户滚动listview.builder,您可以使用physics: NeverScrollableScrollPhysics()
。
当我使用两个ListView时,我遇到了这个问题。除了这个解决方法,没有什么对我有用。
在嵌套的Listview中,用ConstrainedBox覆盖它并给它一些很大的高度。并使用'shrinkWrap:true'两个ListViews。由于收缩膜将修剪额外的空间,因此额外的高度不会成为问题。
Flexible(
child: ListView(
children: <Widget>[
//other Widgets here ...
ConstrainedBox(
constraints: BoxConstraints(maxHeight: 1000), // **THIS is the important part**
child: ListView.builder(
shrinkWrap: true,
itemBuilder: (context, index) => _buildRow(index),
itemCount: _elements.length,
),
),
],
),
),
我希望我的屏幕可以滚动,所以我将所有内容都放在Listview中。
我认为你应该使用带有条子的CustomScrollView。
如果这是你第一次听到裂片,或者它们看起来有点可怕,我建议你阅读this excellent article wrote by Emily Fortuna。
在你的情况下,我会做那样的事情:
return CustomScrollView(
slivers: <Widget>[
SliverToBoxAdapter(
// Put here all widgets that are not slivers.
child: Container(),
),
// Replace your ListView.builder with this:
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return ListTile();
},
),
),
],
);
以上是关于Flutter - 另一个Listview内的Listview.builder的主要内容,如果未能解决你的问题,请参考以下文章
在 Flutter 中的垂直 ScrollView 内的水平 ListView 中显示来自 Firestore 的数据
Flutter - 另一个 Listview 中的 Listview.builder