首页 文章

如何获得最后的 PageView 滚动方向

提问于
浏览
0

我试图通过使用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 回答

  • 1

    将当前_controller.page.round()与上一个侦听器调用的值进行比较(将前一个值存储在State中)。

    • 如果当前值大于先前值,则用户向右滑动。

    • 如果当前值低于先前值,则用户向左滑动。

相关问题