如何在iOS上消除过度滚动?

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

默认情况下,flutter在ios上为overscroll添加了ListView/GridView/...效果,在android上为glow添加了效果

我想完全删除此效果或在一个特定的滚动条上删除。

我该怎么办?

flutter dart flutter-layout flutter-listview
1个回答
0
投票

过度滚动效果来自BouncingScrollPhysics添加的ScrollBehavior

要删除此效果,您需要指定一个自定义ScrollBehavior并覆盖getScrollPhysics方法。为此,只需将应用程序的任何给定部分包装到具有所需ScrollConfigurationScrollBehavior中即可。

以下ScrollBehavior将完全消除过度滚动效果:

class MyBehavior extends ScrollBehavior {
  @override
  ScrollPhysics getScrollPhysics(BuildContext context) => ClampingScrollPhysics();
}

要删除整个应用程序的过度滚动,可以在MaterialApp下添加它:

MaterialApp(
  builder: (context, child) {
    return ScrollConfiguration(
      behavior: MyBehavior(),
      child: child,
    );
  },
  home: MyHomePage(),
);

要在特定的ListView上将其删除,而只包装所需的ListView:

ScrollConfiguration(
  behavior: MyBehavior(),
  child: ListView(
    ...
  ),
)

您还可以使用方法buildViewportChrome的覆盖来消除发光效果,如下所示:

@override
Widget buildViewportChrome(BuildContext context, Widget child, AxisDirection axisDirection) => child;
© www.soinside.com 2019 - 2024. All rights reserved.