首页 > 解决方案 > Flutter pageview:查找第一页和最后一页并滑动方向

问题描述

我正在使用颤振开发图书应用程序。我正在使用每一章的页面浏览量来显示书页。问题是当用户在最后一页向左滑动时,我应该从数据库中加载下一章以及章节标题。反之亦然,在上一章的第一页上向右滑动。那么如何在第一页或最后一页找到该用户并向左或向右滑动?

标签: androiddartflutter

解决方案


onPageChanged您可以通过将方法index与您的方法进行比较来检查它是否是第一页的最后一页collection.length,如下所示:

PageView(
  onPageChanged: (index) {
    if (index + 1 == myCollection.length) {
      loadNextChapter();
    } else if (index == 0) {
      loadPreviousChapter();
    }
  },
);

编辑1:

使用手势检测器:

PageView mPageView = PageView(
  onPageChanged: (index) {
    if (index + 1 == myCollection.length) {
      hasReachedEnd = true;
    } else if (index == 0) {
      hasReachedFirst = true
    } else {
      hasReachedFirst = false
      hasReachedEnd = false
    }
  },
);

GestureDetector mGestureDetector = GestureDetector(
  child: mPageView
  onHorizontalDragEnd: (dragEndDetails) {
    if (dragEndDetails.primaryVelocity < 0 && hasReachedStart) {
      loadPreviousChapter(); //if you want to go to the next page once fetched you can do so by adding .then()
    } else if (dragEndDetails.primaryVelocity > 0 && hasReachedEnd) {
      loadNextChapter();
    }
  }
);

每当我们向左或向右滚动时,我们都会检查我们正在滑动的方向以及我们是在项目列表的末尾还是开头。

每当我们滚动到新页面时,我们都会检查我们是在项目的末尾还是开头。

结合这些会给你想要的效果。


推荐阅读