如何移除 ios 上的过度滚动?

How to remove overscroll on ios?

默认情况下,flutter 在 ios

上添加 overscroll 效果 ListView/GridView/...

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

我能做什么?

我找到了这个答案 (),并且刚刚添加了有关删除滚动效果的信息。

滚动效果来自BouncingScrollPhysicsScrollBehavior

添加

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

ScrollConfiguration

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

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

您还可以通过重写方法 buildViewportChrome 来移除发光效果,如下所示:

@override
Widget buildViewportChrome(BuildContext context, Widget child, AxisDirection axisDirection) => child;

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

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

要在特定的 ListView 上删除它,而不是只包装所需的 ListView :

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

或者只在 ListView

中设置物理:ClampingScrollPhysics()

如果您只想删除 iOS 上的过度滚动行为,则不需要做那些花哨的事情。只需使用:

ListView(
  physics: ClampingScrollPhysics(),
)

将 shrinkWrap: true 添加到 BouncingScrollPhysics(),将移除顶部弹跳。