我发现PageView.Builder
内的物品如果多次刷到下一页,会被多次呼叫。到目前为止,正如我所了解的那样,用pagecontroller
来监听addListeners()
的值是有用的。看来这也是为什么我在PageView.Builder
中的项目被多次调用的原因。
如何防止这种情况?每次滑动时,我都只希望一次。
这是我的综合浏览量(简化代码,ChildItem
由GestureDetector
包装):
var currentPageValue = 0.0;
PageController controller = PageController(viewportFraction: 1, keepPage: false);
@override
void initState() {
super.initState();
controller..addListener(() {
setState(() {
currentPageValue = controller.page;
});
});
}
body: PageView.builder(
physics: NeverScrollableScrollPhysics(),
controller: controller,
itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
value: list[i],
child: Transform(
child: ChildItem(), <--- This is beeing called multiple times when swiping
transform: animationController(context, i),
alignment: animationAlignmentController(context, i),
),
),
childCount: list.length,
),
));