11

By default, flutter adds a overscroll effect on ListView/GridView/... on ios

I would like to remove this effect entirely or on one specific scrollable.

What can I do ?

4

3 回答 3

25

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

ListView(
  physics: ClampingScrollPhysics(),
)
于 2020-06-20T15:47:40.347 回答
23

我找到了这个答案(https://stackoverflow.com/a/51119796/5869913),并添加了有关删除过度滚动效果的信息。

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

要消除这种影响,您需要指定自定义ScrollBehavior和覆盖getScrollPhysics方法。为此,只需将应用程序的任何给定部分包装到ScrollConfiguration带有所需ScrollBehavior.

以下 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(
    ...
  ),
)

或者只是设置物理:ClampingScrollPhysics()在 ListView

于 2019-10-31T14:04:18.647 回答
-1

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

于 2021-04-23T09:45:42.047 回答