我有一个包含可拖动项目的 GridView。当一个项目被拖到屏幕的顶部/底部时,我想在那个方向滚动 GridView。
目前我将每个可拖动项目包装在一个监听器中,如下所示:
Listener(
child: _wrap(widget.children[i], i),
onPointerMove: (PointerMoveEvent event) {
if (event.position.dy >= MediaQuery.of(context).size.height - 100) {
// 120 is height of your draggable.
widget.scrollController.animateTo(
widget.scrollController.offset + 120,
curve: Curves.easeOut,
duration: const Duration(milliseconds: 200));
}if (event.position.dy <= kToolbarHeight + MediaQueryData.fromWindow(window).padding.top + 100) {
// 120 is height of your draggable.
widget.scrollController.animateTo(
widget.scrollController.offset - 120,
curve: Curves.easeOut,
duration: const Duration(milliseconds: 200));
}
}
)
它可以工作,但滚动根本不平滑,看起来有点滞后。我也需要它在网络上工作。
有没有人对此有更好的解决方案?