默认情况下,flutter会在ios上的ListView/GridView/...上添加overscroll效果
我想要完全消除这种影响或在一个特定的滚动。
我能做些什么?
发布于 2019-10-31 22:04:19
我找到了这个答案(https://stackoverflow.com/a/51119796/5869913),并添加了有关删除overscroll效果的信息。
overscroll效果来自于ScrollBehavior添加的BouncingScrollPhysics
要消除此效果,您需要指定自定义ScrollBehavior并覆盖getScrollPhysics方法。为此,只需使用所需的ScrollBehavior将应用程序的任何给定部分包装到ScrollConfiguration中。
下面的ScrollBehavior将完全消除overscroll效果:
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()
发布于 2020-06-20 23:47:40
如果你只想移除iOS上的滚动过屏行为,你不需要做这些花哨的事情。简单地,使用:
ListView(
physics: ClampingScrollPhysics(),
)发布于 2021-04-23 17:45:42
向BouncingScrollPhysics()添加shrinkWrap: true将删除顶部反弹。
https://stackoverflow.com/questions/58645048
复制相似问题