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

Flutter中如何不调用刷新函数触发下拉刷新并显示加载器

解决方案:直接控制RefreshController的头部状态

要在不执行onRefresh内刷新逻辑的前提下显示顶部加载器,你可以直接修改RefreshController的headerMode状态:

  1. 显示加载器:
    直接设置头部状态为RefreshStatus.refreshing,这会立即触发加载器显示:

    refreshController.headerMode.value = RefreshStatus.refreshing;
    
  2. 隐藏加载器:
    当需要结束加载状态时,调用对应方法:

    // 加载完成时调用
    refreshController.refreshCompleted();
    // 加载失败时调用
    refreshController.refreshFailed();
    

为什么requestRefresh(needCallback: false)不生效?

requestRefresh(needCallback: false)的设计是跳过onRefresh回调,但它内部仍依赖列表位置等触发条件,且未强制更新头部状态显示。直接修改headerMode的方式更可靠,能强制触发加载器的UI状态变化。

完整示例代码

final RefreshController refreshController = RefreshController(initialRefresh: true);

// 调用此方法显示加载器(不执行原有刷新逻辑)
void showLoaderWithoutRefresh() {
  refreshController.headerMode.value = RefreshStatus.refreshing;
  // 模拟延迟后隐藏加载器
  Future.delayed(const Duration(seconds: 2), () {
    refreshController.refreshCompleted();
  });
}

// 你的SmartRefresher组件
SmartRefresher(
  controller: refreshController,
  onRefresh: () {
    // 原有的刷新逻辑
  },
  enablePullDown: true,
  scrollController: scrollController,
  child: ListView(),
)

内容的提问来源于stack exchange,提问作者Anthony Aniobi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:37:05