По умолчанию флаттер добавляет эффект overscroll
на ListView/GridView/...
на ios.
Я хотел бы удалить этот эффект полностью или на одном конкретном прокручиваемом объекте.
Что я могу сделать ?
По умолчанию флаттер добавляет эффект overscroll
на ListView/GridView/...
на ios.
Я хотел бы удалить этот эффект полностью или на одном конкретном прокручиваемом объекте.
Что я могу сделать ?
Я нашел этот ответ (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
Вам не нужно делать эти причудливые вещи, если вы хотите убрать чрезмерную прокрутку только на iOS. Просто используйте:
ListView(
physics: ClampingScrollPhysics(),
)
Добавление shrinkWrap: true в BouncingScrollPhysics () удалит отскок сверху.