You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Very Good InfiniteList初始化自动调用onFetchData的优化咨询

解决InfiniteList初始化自动调用onFetchData的更优方案

直接用组件自带的initialLoad参数就能搞定,不用自己维护布尔变量:

这个组件默认会在初始化时触发onFetchData,但它提供了initialLoad配置项,把它设为false就能关闭首次自动调用,之后只会在滚动到底部时触发加载逻辑:

InfiniteList(
  isLoading: state.loadMore,
  loadingBuilder: (context) => widgetLoadMore(),
  initialLoad: false, // 关键:关闭初始化时的自动调用
  onFetchData: () {
    bloc.add(GetMore()); // 现在仅在滚动触底时执行
  },
)

如果你的组件版本没有initialLoad参数,也可以自己封装一个简单的单次拦截工具类,避免手动维护布尔变量:

// 简单的单次执行拦截器
class Once {
  bool _triggered = false;

  void execute(VoidCallback func) {
    if (_triggered) {
      func();
      return;
    }
    _triggered = true;
  }
}

// 使用方式
final loadInterceptor = Once();

onFetchData: () {
  loadInterceptor.execute(() {
    bloc.add(GetMore());
  });
},

第一种方案是最推荐的,完全利用组件原生能力,代码更简洁也更易维护。

内容的提问来源于stack exchange,提问作者Truong Ngoc Tuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 06:02:34