【发布时间】:2018-12-29 21:03:45
【问题描述】:
我正在尝试实现类似于 CureJoy iOS 应用程序的东西,其中每个项目看起来像一个完全占据屏幕高度的独立垂直列表项目,当我们向下滚动一点时,它会捕捉到占据整个屏幕高度的下一个项目。我已经尝试了很多事情,比如
NotificationListener(onNotification: ... // other code
包装到列表视图并调用处理滚动更改的函数
_func(ScrollNotification notification) {
... // other code
double scollPos = notification.metrics.pixels;
double toScroll = oldScrollPos;
newScrollPos = scrollPos;
if(newScrollPos < oldScrollPos)
toScroll -= rowHeight;
else
toScroll += rowHeight;
oldScrollPos = toScroll;
_scrollController.animateTo(toScroll,
duration: const Duration(milliseconds: 500),
curve: Curves.easeOut,
);
其他代码实际上做了一些逻辑来保存可能小于或大于当前滚动位置的先前滚动位置,据此我将强制步进到下一个或上一个列表项位置。这是非常无效的,并且滚动到许多错误的位置并在最后抛出错误。
有没有非常优雅和简单的解决方案?
【问题讨论】:
标签: listview scroll flutter dart