一尘不染

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

flutter

默认情况下,抖动会在ios overscroll上添加效果ListView/GridView/...

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

我能做什么 ?


阅读 306

收藏
2020-08-13

共1个答案

一尘不染

我找到了这个答案(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中

2020-08-13