Flutter List View项目占据屏幕高度并滚动到下一个项目

时间:2018-07-22 01:38:13

标签: listview scroll flutter dart

我正在尝试实现与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,
    );

其他代码实际上执行一些逻辑,以保持上一个滚动位置可能小于或大于当前滚动位置,根据该逻辑,我将强制 step 到下一个或上一个列表项位置。这是非常无效的,会滚动到许多错误的位置并最终引发错误。

有一个非常优雅,更轻松的解决方案吗?

1 个答案:

答案 0 :(得分:1)

对不起,但是我从事现有工作以取得预期结果的本性给我带来了损失,但是Flutter似乎准备了PageView类。啊,我很as愧!