android - Flutter pageview:查找第一页和最后一页并滑动方向
问题描述
我正在使用颤振开发图书应用程序。我正在使用每一章的页面浏览量来显示书页。问题是当用户在最后一页向左滑动时,我应该从数据库中加载下一章以及章节标题。反之亦然,在上一章的第一页上向右滑动。那么如何在第一页或最后一页找到该用户并向左或向右滑动?
解决方案
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();
}
}
);
每当我们向左或向右滚动时,我们都会检查我们正在滑动的方向以及我们是在项目列表的末尾还是开头。
每当我们滚动到新页面时,我们都会检查我们是在项目的末尾还是开头。
结合这些会给你想要的效果。
推荐阅读
- primefaces - 为什么如果在 PrimeFaces 的 ui:composition 模板中调用轮询方法侦听器不起作用?
- javascript - 事件处理/捕获
- javascript - 地图已初始化时更改 Leaflet 中的手势处理
- c++ - 使用指向填充有 utf 16 纯文本的缓冲区的指针
- c# - 如何在 EF 中重新迁移已迁移的 dbcontext
- c# - DateRange 搜索在弹性搜索 NEST api 中不起作用
- css - 如何修复带有侧边栏和产品描述但没有描述的单个产品页面的店面宽度被截断
- r - 按日期累积
- react-native - React Native List and Grid - 如何实现图标的活动颜色
- python - 如何在 Pyspark 会话中释放内存