Flutter如何隐藏可滚动小部件(例如Listview.builder,SingleChildScrollView等)中的滚动条(thumb)

20

如何从SingleChildScrollViewListview.builder中移除滚动条?在最新更新后,它会在滚动时自动出现(Windows平台)。

我尝试了以下解决方案:

 NotificationListener<ScrollNotification>(
     onNotification: (_) => true,
     child: ...,
    );

还尝试将我的小部件树包装在一个带有isAlwaysShown和controller的Scrollbar小部件中,但两种变体都没有起作用。

仍然在

3个回答

70
为了在桌面/网络上隐藏滚动条,请将您的小部件树包装在一个ScrollConfiguration小部件中,并设置ScrollConfiguration.of(context).copyWith(scrollbars: false)的行为。
 ScrollConfiguration(
      behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false),
      child: ...,),


或者您可以将scrollBehavior添加到MaterialApp小部件中。
class NoThumbScrollBehavior extends ScrollBehavior {
  @override
  Set<PointerDeviceKind> get dragDevices => {
        PointerDeviceKind.touch,
        PointerDeviceKind.mouse,
        PointerDeviceKind.stylus,
        PointerDeviceKind.trackpad,
      };
}

return MaterialApp(
      debugShowCheckedModeBanner: false,
      scrollBehavior: NoThumbScrollBehavior().copyWith(scrollbars: false),
      home: MainWindow(),
    );

在dragDevices的getter方法中,还要添加PointerDeviceKind.trackpad,以便为那些使用没有鼠标的笔记本电脑的用户提供支持。'^^ - Hyung Tae Carapeto Figur
谢谢,我已经更新了示例。然而,我在没有触控板支持的情况下测试了我的应用程序的整体行为,它在笔记本电脑上工作得很好,所以我真的看不出为什么要在应用程序中添加这样的行为支持。 - Kirill
谢谢 :) 我评论是因为它对我来说不起作用。只是补充一下那行代码是有效的。我正在使用一台英特尔 MacBook Air。 - Hyung Tae Carapeto Figur

16

将可滚动小部件包装在ScrollConfiguration

ScrollConfiguration(
 behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false),
 child: ListView(...)
)

1
最简单和最快的方法是在滚动条小部件上设置thickness: 0。它看起来会像这样:

 Scrollbar(
          thickness: 0,
          child: ...
 )

在showGeneralDialog()函数中对我没有起作用。 - Shubhanshu Kashiva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接