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

时间:2019-10-31 14:04:18

标签: flutter dart flutter-layout flutter-listview

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

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

我该怎么办?

3 个答案:

答案 0 :(得分:3)

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

[1, 2, 3, 4, 5]

答案 1 :(得分:1)

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

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

要消除此影响,您需要指定一个自定义ScrollBehavior并覆盖getScrollPhysics方法。为此,只需将应用程序的任何给定部分包装到具有所需ScrollConfiguration的{​​{1}}中即可。

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

ScrollBehavior

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

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

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

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

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

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

或仅在ListView中设置物理:ScrollConfiguration( behavior: MyBehavior(), child: ListView( ... ), )

答案 2 :(得分:0)

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