mirror of
https://github.com/alibaba/flutter-go.git
synced 2025-07-03 14:09:04 +08:00
Merge pull request #324 from jelychow/master
优化 HomeBanner 组件最后一页滑动过渡效果
This commit is contained in:
@ -22,6 +22,7 @@ class _BannerState extends State<HomeBanner> {
|
||||
int realIndex = 1;
|
||||
PageController controller;
|
||||
Timer timer;
|
||||
int lastPage=1;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@ -33,6 +34,27 @@ class _BannerState extends State<HomeBanner> {
|
||||
duration: Duration(milliseconds: 300),
|
||||
curve: Curves.linear);
|
||||
});
|
||||
|
||||
controller.addListener(() {
|
||||
var res = (controller.page - lastPage).abs();
|
||||
// setState(() {});
|
||||
int count = widget.bannerStories.length;
|
||||
|
||||
if (res > (0.95)) {
|
||||
if (realIndex == 0) {
|
||||
controller.jumpToPage( widget.bannerStories.length);
|
||||
virtualIndex = count - 1;
|
||||
} else if (realIndex == widget.bannerStories.length + 1) {
|
||||
virtualIndex = 0;
|
||||
controller.jumpToPage(1);
|
||||
} else {
|
||||
virtualIndex = realIndex - 1;
|
||||
}
|
||||
|
||||
setState(() {
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
@ -141,18 +163,20 @@ class _BannerState extends State<HomeBanner> {
|
||||
}
|
||||
|
||||
_onPageChanged(int index) {
|
||||
lastPage = realIndex;
|
||||
|
||||
realIndex = index;
|
||||
int count = widget.bannerStories.length;
|
||||
if (index == 0) {
|
||||
virtualIndex = count - 1;
|
||||
controller.jumpToPage(count);
|
||||
} else if (index == count + 1) {
|
||||
virtualIndex = 0;
|
||||
controller.jumpToPage(1);
|
||||
} else {
|
||||
virtualIndex = index - 1;
|
||||
}
|
||||
setState(() {});
|
||||
// int count = widget.bannerStories.length;
|
||||
// if (index == 0) {
|
||||
// virtualIndex = count - 1;
|
||||
// controller.jumpToPage(count);
|
||||
// } else if (index == count + 1) {
|
||||
// virtualIndex = 0;
|
||||
// controller.jumpToPage(1);
|
||||
// } else {
|
||||
// virtualIndex = index - 1;
|
||||
// }
|
||||
// setState(() {});
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user