簡體   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