dart - ScrollController 如何检测滚动开始、停止和滚动?

我正在为 SingleChildScrollView 小部件使用 ScrollController,我想在其中检测滚动开始、结束/停止和仍在滚动的时间?

如何检测,我正在使用 Listene

scrollController = ScrollController()
      ..addListener(() {
        scrollOffset = _scrollController.offset;
      });

也尝试使用 _scrollController.position.activity.velocity 但没有帮助我。

还有

_scrollController.position.didEndScroll();
_scrollController.position.didStartScroll();

但是我该如何使用它呢?

最佳答案

从此链接 https://medium.com/@diegoveloper/flutter-lets-know-the-scrollcontroller-and-scrollnotification-652b2685a4ac

只需将您的 SingleChildScrollView 包装到 NotificationListener 并更新您的代码,如 ..

NotificationListener<ScrollNotification>(
                onNotification: (scrollNotification) {
                  if (scrollNotification is ScrollStartNotification) {
                    _onStartScroll(scrollNotification.metrics);
                  } else if (scrollNotification is ScrollUpdateNotification) {
                    _onUpdateScroll(scrollNotification.metrics);
                  } else if (scrollNotification is ScrollEndNotification) {
                    _onEndScroll(scrollNotification.metrics);
                  }
                },
                child: SingleChildScrollView(
                /// YOUR OWN CODE HERE
               )
)

然后声明方法就像

_onStartScroll(ScrollMetrics metrics) {
    print("Scroll Start");
  }

  _onUpdateScroll(ScrollMetrics metrics) {
    print("Scroll Update");
  }

  _onEndScroll(ScrollMetrics metrics) {
    print("Scroll End");
  }

您将通过特定方式收到通知。

https://stackoverflow.com/questions/56071731/

相关文章:

architecture - flutter BLoC : Is using nested Stre

flutter - 了解 Flutter didChangeDependencies 机制

ios - 将今天的扩展添加到 flutter 应用程序的问题

flutter - 在 Flutter 中监听设备方向变化

flutter - 通过 Firebase 使用 Google 登录时, 'ApiExpceptio

charts - 如何在 flutter 中制作动态图表?

dart - 使用键和值从 map 创建小部件列表

intellij-idea - 如何启用 Flutter/Dart 语言实验?

authentication - 如何在 Flutter 应用中集成 Azure AD SSO

dart - 如何在 Flutter/Dart 中将参数从命令行传递到 main?