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

我想完全消除这个效果,或者在一个特定的滚动页面上.

我能做些什么呢?

推荐答案

我找到了这个答案(https://stackoverflow.com/a/51119796/5869913),并添加了关于删除overscroll效应的信息.

超卷效果来自BouncingScrollPhysicsScrollBehavior

要删除此效果,需要指定一个自定义的ScrollBehavior和override 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(
    ...
  ),
)

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

Dart相关问答推荐

如何在将构造函数参数赋给最终变量和传递给超级构造函数之前操作它?

Dart中的运算符(){…}做什么?

Dart:当两个或多个任务等待同一个 Future 时会发生什么

Flutter 布局:如何在 Flutter 中将 Row 放入 Flex(或另一个 Row)中?还使用堆栈小部件

Flutter Drawer 作为单独的小部件不允许修改宽度

有没有办法在用户停止输入后发送请求?

Swipe返回手势

Dart中有没有类似python 字典(dictionary) struct ?

在 Flutter 中保持响应的同时制作持久的背景图像

无法将小部件标记为需要构建,因为框架已经在构建小部件的过程中

为什么这个文件会自动创建自己 generate_plugin_registrant.dart

无法导入 dart 的 intl 包

未定义命名参数child.在 Center() 构造函数中

从 HttpClientResponse 检索响应正文

Dart 中的异步可迭代映射

如何使异步 Dart 调用同步?

判断dart中的字符串是否为数字

Dart 字符串比较器

Angular.js 和 Angular.dart 的区别?

Dart中var和dynamic类型的区别?