【问题标题】:Flutter infinite scroll - Scroll listener triggersFlutter 无限滚动 - 滚动监听器触发器
【发布时间】:2019-12-06 13:21:44
【问题描述】:

我正在构建一个无限列表视图,每次用户到达他们的提要中的某个位置(比如接近 90%)时,我都会在其中进行后端调用。我正在使用 ScrollController 并将类似此函数的内容附加到侦听器:

void _onScroll() {

    var triggerFetchMoreSize =
        0.9 * _scrollController.position.maxScrollExtent;
    if (_scrollController.position.pixels >
        triggerFetchMoreSize) {
      print("fetch more after you reached 90% ");
    }

  }

但这会在提要滚动时多次触发。如果用户上下滚动,可以触发相同的请求。我该如何处理?

我怎样才能确保我只为每个正确的触发器发出一个后端请求(比如一个初始请求 + 只有一个当用户滚动到当前提要的 90% 左右时 + ...)

【问题讨论】:

  • 在某处缓存您的请求,例如使用MapCache - 文档说:“对缓存的所有访问都是异步的,因为许多实现会将它们的条目存储在远程系统、隔离或否则得做异步IO读写”
  • 您也可以将其存储在小部件状态。你可以存储 fe。您获取的最后一个 url 或 id 并在发出请求之前对其进行比较

标签: flutter flutter-dependencies


【解决方案1】:
 @override
  void initState() {
    super.initState();
    // connect(sourceUser);
    _scrollController.addListener(() {
      var triggerFetchMoreSize =
          0.7 * _scrollController.position.maxScrollExtent;

      if (_scrollController.position.pixels ==
          _scrollController.position.maxScrollExtent) {
        print(10);
        pagination();
      }
    });
  
  }

  @override
  void dispose() {
    _scrollController.dispose();
    super.dispose();
  }

请使用 dispose 方法停止多次加载。

【讨论】:

    猜你喜欢
    • 2015-05-30
    • 1970-01-01
    • 2015-09-20
    • 2023-03-15
    • 2021-01-31
    • 2018-09-21
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    相关资源
    最近更新 更多