【发布时间】:2021-11-16 14:40:15
【问题描述】:
所以基本上我在一个固定容器内的 ListView.builder 小部件。
Container(
height: 500,
child: TabBarView(
children: [
Container(
height: 500,
color: Colors.red,
child: ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: 100,
itemBuilder: (context, index) {
return Center(child: Text("This is index $index"));
},
),
),
Center(child: Text("Second Tab")),
Center(child: Text("Third Tab")),
],
),
),
问题:
这个小部件的问题是,由于它位于一个固定高度的容器内,所以列表的内容被截断了。我希望列表与页面的其余部分一起滚动,因此我不想删除shrinkWrap 或NeverScrollableScrollPhysics()。我想要它,以便列表占用所需的空间。
我尝试过的事情:
- 用 Column 包装 ListView:这会导致小部件溢出,当我在该 Column 周围添加 SingleChildScrollView 时,它会删除
shrinkWrap和NeverScrollableScrollPhysics()的功能。 - 检查了这个answer。 父小部件实际上是一个 CustomScrollView,而这个小部件位于 SliverToBoxAdapter 内部。这就是容器首先具有固定大小的原因。
如何让 ListView 占用尽可能多的空间?谢谢!
【问题讨论】:
-
我不确定这是否是您要查找的内容,但您是否尝试过“ListView”中的
primary: false? primary 属性使 ListView 的滚动停止并使用父级的滚动。 -
我刚试过,不幸的是它不起作用。不过还是谢谢。
-
如果您想要一个可滚动的 TabBarView,那么我建议您查看stackoverflow.com/questions/53747149/…。可能稍微改变你的实现并不会损害它看起来干净。
-
我实际上最终使用了单独的样式,但谢谢!我刚刚尝试了该帖子中的解决方案,它确实适用于我原来的用例。很烦我之前没找到哈哈。