首页 > 解决方案 > 标签未满时如何禁用滚动?

问题描述

我正在尝试制作一个嵌套标签,但我有一点外观问题。当我有一个空标签时,我想禁用滚动。

当您查看下面的示例时,我有两个选项卡 - 其中一个包含一个列表,第二个仅包含一个文本小部件。为什么可能滚动也是第二个标签?我只会在必要时滚动。

DefaultTabController(
    length: 2,
    child: NestedScrollView(
        headerSliverBuilder: (context, value) {
        return [
            SliverToBoxAdapter(
            child: Container(
                height: 100,
                child: Center(
                child: Text("Header")
                ),
            ),
            ),
            SliverToBoxAdapter(
                child: TabBar(
                    labelColor: Colors.red,
                    unselectedLabelColor: Colors.black54,
                    tabs: [Text("Tab 1"), Text("Tab 2")]))
        ];
        },
        body: TabBarView(
            children: [
                ListView.builder(
                    itemCount: 150,
                    itemBuilder: (BuildContext context, int index) {
                    return Text("item");
                    }),
                ListView.builder(
                    itemCount: 1,
                    itemBuilder: (BuildContext context, int index) {
                    return Text("One item");
                    }),
            ],
        ),
    ),
)

标签: flutter

解决方案


这是一个ListView问题。默认情况下,ListView将占用屏幕上的所有可用空间,并且始终可以滚动。如果这不是所需的行为,您可以在其上设置以下内容:

ListView(
  shrinkWrap: true,
  primary: false,
  // ...
);

推荐阅读