【问题标题】:How to disable scrolling when tab is not full?标签未满时如何禁用滚动?
【发布时间】:2019-12-02 13:58:38
【问题描述】:

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

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

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


    【解决方案1】:

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

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

    【讨论】:

    • 那行不通。我只想在必要时滚动应用栏。当我尝试设置 shrinkWrap 时,listview 不会随 appbar 一起滚动。
    猜你喜欢
    • 2017-08-12
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2023-02-10
    • 2011-06-13
    • 1970-01-01
    相关资源
    最近更新 更多