flutter 如何获取最后的PageView滚动方向

标签 flutter

我正在尝试使用PageView来获取用户向哪个方向(向左或向右)滑动。
我能够得到这样的指示。

代码:

 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方法
多次返回。
在当前页面完全切换到下一页后,有什么方法可以获取此信息?

flutter: swiped to right
flutter: swiped to right
flutter: swiped to right
flutter: swiped to right
flutter: swiped to right
flutter: swiped to right
flutter: swiped to right
flutter: swiped to right
flutter: swiped to right
flutter: swiped to right
flutter: swiped to right

最佳答案

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

  • 如果当前值大于以前的值,则用户向右滑动。
  • 如果当前值低于上一个值,则用户向左滑动。
  • 关于 flutter 如何获取最后的PageView滚动方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52203527/

    相关文章:

    Flutter:点击时 TextFormField 重建对话框

    user-interface - Flutter:有没有办法改变DataTable的行线颜色?

    flutter - 在执行 flutter 应用程序期间阻止视频录制

    flutter - 如何以小写形式调用另一个类的方法?

    android - flutter 中的 FCM 自定义通知图标

    Flutter/Dart 逻辑,用于将 API Future 的返回值分配给另一个变量/函数

    ListView的Flutter动态高度

    flutter - 如何将数据传递给 PopupMenuButton 小部件的 onSelected 方法?

    intellij-idea - IntelliJ更新后我无法加载dart/flutter插件

    flutter - 如何将 List 的每一项与 ListView 构建器的每一项进行比较?