我试图通过使用PageView
来获取哪个 direction(left 或右用户。我能够得到这样的方向。
码:
PageController _controller;
@override
void initState() {
_controller = new PageController()..addListener(_listener);
super.initState();
}
_listener() {
if (_controller.position.userScrollDirection == ScrollDirection.reverse) {
print('swiped to right');
} else {
print('swiped to left');
}
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(),
body: PageView.builder(
itemCount: 10,
controller: _controller,
itemBuilder: (context, index) {
return new Center(child: Text('item ${++index}'));
}),
);
}
但是,由于它没有结束滚动,print
方法会多次返回。在当前页面完全切换到下一页后,我有没有办法得到这个?
扑:向右滑
扑:向右滑
扑:向右滑
扑:向右滑
扑:向右滑
扑:向右滑
扑:向右滑
扑:向右滑
扑:向右滑
扑:向右滑
扑:向右滑
1 回答
将当前
_controller.page.round()
与上一个侦听器调用的值进行比较(将前一个值存储在State
中)。如果当前值大于先前值,则用户向右滑动。
如果当前值低于先前值,则用户向左滑动。