【问题标题】:How to stop listview from overflowing inside a column?如何阻止列表视图在列内溢出?
【发布时间】: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")),
              ],
            ),
          ),

问题:

这个小部件的问题是,由于它位于一个固定高度的容器内,所以列表的内容被截断了。我希望列表与页面的其余部分一起滚动,因此我不想删除shrinkWrapNeverScrollableScrollPhysics()。我想要它,以便列表占用所需的空间。

我尝试过的事情:

  1. 用 Column 包装 ListView:这会导致小部件溢出,当我在该 Column 周围添加 SingleChildScrollView 时,它会删除 shrinkWrapNeverScrollableScrollPhysics() 的功能。
  2. 检查了这个answer父小部件实际上是一个 CustomScrollView,而这个小部件位于 SliverToBoxAdapter 内部。这就是容器首先具有固定大小的原因。

如何让 ListView 占用尽可能多的空间?谢谢!

【问题讨论】:

  • 我不确定这是否是您要查找的内容,但您是否尝试过“ListView”中的primary: false? primary 属性使 ListView 的滚动停止并使用父级的滚动。
  • 我刚试过,不幸的是它不起作用。不过还是谢谢。
  • 如果您想要一个可滚动的 TabBarView,那么我建议您查看stackoverflow.com/questions/53747149/…。可能稍微改变你的实现并不会损害它看起来干净。
  • 我实际上最终使用了单独的样式,但谢谢!我刚刚尝试了该帖子中的解决方案,它确实适用于我原来的用例。很烦我之前没找到哈哈。

标签: flutter dart


【解决方案1】:

SingleChildScrollView 包裹你的容器,然后生成scrollPhysics

SingleChildScrollView(
           Container(
                  height: 500,
                  color: Colors.red,
                  child: ListView.builder(
                    shrinkWrap: true,
                    physics: ScrollPhysics(),
                    itemCount: 100,
                    itemBuilder: (context, index) {
                      return Center(child: Text("This is index $index"));
                    },
                  ),
                ),
)

【讨论】:

  • TabBar动态高度不行,我试过了。
  • 不,当我这样做时,它会删除shrinkWrapNeverScrollableScrollPhysic() 的功能。基本上我正在尝试获取 instagram 个人资料页面功能。一切都滚动在一起。
  • 你也想滚动标签栏,对吗?
  • 是的,使 TabBarView 的子项可滚动。问题是固定容器,但我必须保持它固定,因为它在 SliverToBoxAdapter 内
猜你喜欢
  • 2022-01-21
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多