【发布时间】:2021-10-03 07:17:24
【问题描述】:
我有一个简单的 PageView.builder:
@override
void initState() {
super.initState();
_pageController =
PageController(initialPage: 0, keepPage: true, viewportFraction: 1);
_pageController.addListener(() {
setState(() {
_activeImageIndex = _pageController.page!.toInt();
});
});
}
......
child: PageView.builder(
scrollDirection: Axis.vertical,
controller: _pageController,
itemCount: lstUserImages.length,
onPageChanged: (page) {
setState(() {
_activeImageIndex = page;
});
},
itemBuilder: (context, index) {
return GestureDetector(
child: Image.asset(
lstUserImages[index],
fit: BoxFit.cover,
),
);
}),
它工作正常,除了当我刷卡时,它不会将页面索引重置为 0(用于下一张卡)。因此,如果对于一张卡片,我正在查看第三张图片(索引 = 2),那么在我刷完那张卡片后,下一张卡片就会加载第三张图片。
我有可用的 onSwipeComplete:
swipeCompleteCallback:
(CardSwipeOrientation orientation, int index) {
setState(() {
//WHAT DO I DO HERE SO THAT THE PAGE INDEX IS SET TO ZERO AGAIN..??
//isCardChanged = true;
//_pageController.jumpToPage(0);
_pageController = PageController(
initialPage: 0, keepPage: true, viewportFraction: 1);
});
},
【问题讨论】:
-
跳转到页面应该可以工作。我怀疑创建一个新控制器是否会解决这种情况......
-
当您说滑动时,您的意思是滑动并删除它还是只是滑动?
-
滑动删除
-
这应该可以工作...api.flutter.dev/flutter/widgets/ScrollController/detach.html.. 它适用于滚动控制器,但也适用于页面控制器
-
或者你可以使用一个可关闭的小部件,自己实现平滑删除
标签: flutter dart flutter-pageview swipecardview