Flutter 如何在 Listview.builder、SingleChildScrollView 等可滚动小部件中隐藏滚动条(拇指)

问题描述 投票:0回答:3

有什么方法可以从

SingleChildScrollView
Listview.builder
中删除滚动条吗?最新更新后,它滚动时自动出现(平台Windows)。

我尝试过这个解决方案:

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

还尝试使用 isAlwaysShown 和控制器将我的小部件树包装在滚动条小部件中,但这两种变体都不起作用。

flutter flutter-layout scrollbar
3个回答
62
投票

要隐藏桌面/网络上的滚动条,请将您的小部件树包装在 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(),
    );

14
投票

将可滚动小部件包装在 ScrollConfiguration

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

0
投票

实现此目的最简单、最快的方法是在滚动条小部件上设置

thickness: 0
。它看起来像这样:

 Scrollbar(
          thickness: 0,
          child: ...
 )
© www.soinside.com 2019 - 2024. All rights reserved.