繁体   English   中英

Flutter:滚动期间调用函数

[英]Flutter: call function during scroll

我有一个滚动控制器,它检查滚动位置是否超过阈值,然后调用函数:

final _scrollController = ScrollController();
final _scrollThreshold = 200.0;
_scrollController.addListener(_onScroll);

void _onScroll() {
  final maxScroll = _scrollController.position.maxScrollExtent;
  final currentScroll = _scrollController.position.pixels;
  if (maxScroll - currentScroll <= _scrollThreshold) {
    dummyFunction();
  }
}

目前, dummyFunction()被多次调用,如何确保它会被调用一次?

我不确定您想要达到的确切目标,但我认为您可以使用controller.position ,它是可滚动的当前可见段。 此变量包含有关其在可滚动内容中的位置的信息,例如extentBeforeextentAfter extentAfter表示可用的剩余滚动空间,因此您可以执行以下操作来触发您的功能:

  void _onScroll() {
    if (controller.position.extentAfter < someThreshold) {
      _dummyFunction()
    }
  }

使用boolean存储函数是否被调用:

final _scrollController = ScrollController();
final _scrollThreshold = 200.0;
_scrollController.addListener(_onScroll);
final _hasReachedPoint = false;

void _onScroll() {
  final maxScroll = _scrollController.position.maxScrollExtent;
  final currentScroll = _scrollController.position.pixels;
  if (maxScroll - currentScroll <= _scrollThreshold && !_hasReachedPoint) {
    _hasReachedPoint = true;
    dummyFunction();
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM