我正在开发一个使用flutter的图书应用程序。我使用pageview显示每一章的书页。问题是,当用户在最后一页向左滑动时,我应该从数据库中加载下一章以及章节标题。反之亦然,在前一章的第一页上向右滑动。那么,如何在第一页或最后一页找到该用户,并向左或向右滑动?
发布于 2019-03-19 02:45:39
您可以通过将onPageChanged方法index与您的collection.length进行比较来检查它是否是第一页的最后一页,如下所示:
PageView(
onPageChanged: (index) {
if (index + 1 == myCollection.length) {
loadNextChapter();
} else if (index == 0) {
loadPreviousChapter();
}
},
);编辑1:
使用GestureDetector:
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();
}
}
);每当我们向左或向右滚动时,我们都会检查滑动的方向,以及我们是在项目列表的末尾还是开头。
每当我们滚动到新页面时,我们都会检查我们是在项目的末尾还是在项目的开头。
将这些组合在一起将会给你带来想要的效果。
发布于 2019-08-26 21:31:35
我用OverscrollIndicatorNotification解决了这个问题。包括章节和子章节。
return new Container(
child: NotificationListener<OverscrollIndicatorNotification>(
onNotification: ((notification) {
print(notification.toString());
if (notification is OverscrollIndicatorNotification) {
if (notification.depth == 0 ||_listOfCat.indexOf(_category)==0) {
int index = _listOfSubCat.indexOf(_subCategory);
if (notification.leading) {
if (index != 0) {
setSubCatId(_listOfSubCat[index - 1]);
} else {
index = _listOfCat.indexOf(_category);
if (index != 0) {
setCatId(_listOfCat[index - 1]);
}
}
} else {
if (index != _listOfSubCat.length - 1) {
setSubCatId(_listOfSubCat[index + 1]);
} else {
index = _listOfCat.indexOf(_category);
if (index != _listOfCat.length - 1) {
setCatId(_listOfCat[index + 1]);
}
}
}
}
}
return true;
}),
child: _pageView=PageView(
....
)
));https://stackoverflow.com/questions/55227030
复制相似问题