Вы можете использовать виджет Listener
, чтобы следить за событиями перетаскивания, происходящими на вашем ListView
, и вручную прокручивать ListView
до желаемого смещения, используя ScrollController
, прикрепленный к этому ListView
.
Здесь это пример кода:
Listener(
onPointerSignal: (ps) {
if (ps is PointerScrollEvent) {
_controller.animateTo(ps.position.dy,
duration: Duration(milliseconds: 500),
curve: Curves.linear);
}
},
child: ListView.builder(
itemCount: 100,
controller: _controller,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (BuildContext context, int index) {
return Container(
height: 100,
margin: EdgeInsets.all(10),
color: index.isEven ? Colors.blue : Colors.green);
}))
А вот ссылка на рабочую демонстрацию (вам, возможно, придется поиграть с событиями слушателя, чтобы прокрутка была идеальной, это всего лишь пример )