ByteNoteByteNote

字节笔记本

2026年2月19日

flutter_easy_refresh:Flutter 下拉刷新上拉加载组件

本文介绍 flutter_easy_refresh,一个 Flutter 下拉刷新和上拉加载组件,支持几乎所有 Flutter 可滚动组件。

flutter_easy_refresh 简介

flutter_easy_refresh 是由 xuelongqy 开发的 Flutter 插件,提供下拉刷新和上拉加载功能。它支持几乎所有 Flutter 的可滚动组件,在 GitHub 上拥有 4.1k stars 和 665 forks,采用 MIT 许可证。

核心定位:A flutter widget that provides pull-down refresh and pull-up load

核心特性

  • 支持所有可滚动组件
  • 滚动物理作用域精确匹配
  • 集成多种 Header 和 Footer 样式
  • 支持自定义样式实现各种动画效果
  • 支持下拉刷新、上拉加载(可通过控制器触发和完成)
  • 支持指示器位置设置
  • 支持页面启动时刷新
  • 支持安全区域
  • 可自定义滚动参数

基本信息

技术栈

语言占比
Dart93.6%
C++3.2%
CMake1.7%
其他1.5%

安装方法

pubspec.yaml 中添加:

yaml
dependencies:
  easy_refresh: ^3.0.0

然后执行:

bash
flutter pub get

使用示例

基础用法

dart
import 'package:easy_refresh/easy_refresh.dart';

EasyRefresh(
  onRefresh: () async {
    // 下拉刷新逻辑
    await Future.delayed(Duration(seconds: 2));
  },
  onLoad: () async {
    // 上拉加载逻辑
    await Future.delayed(Duration(seconds: 2));
  },
  child: ListView.builder(
    itemCount: 20,
    itemBuilder: (context, index) {
      return ListTile(title: Text('Item $index'));
    },
  ),
);

使用控制器

dart
final EasyRefreshController _controller = EasyRefreshController();

EasyRefresh(
  controller: _controller,
  onRefresh: () async {
    // 刷新逻辑
    _controller.finishRefresh();
  },
  onLoad: () async {
    // 加载逻辑
    _controller.finishLoad(IndicatorResult.noMore);
  },
  child: ListView(),
);

// 触发刷新
_controller.callRefresh();

// 触发加载
_controller.callLoad();

自定义样式

dart
EasyRefresh(
  header: ClassicHeader(
    dragText: 'Pull to refresh',
    armedText: 'Release ready',
    readyText: 'Refreshing...',
    processingText: 'Refreshing...',
    processedText: 'Succeeded',
    noMoreText: 'No more',
    failedText: 'Failed',
    showMessage: false,
    showTime: false,
  ),
  footer: ClassicFooter(
    dragText: 'Pull to load',
    armedText: 'Release ready',
    readyText: 'Loading...',
    processingText: 'Loading...',
    processedText: 'Succeeded',
    noMoreText: 'No more',
    failedText: 'Failed',
  ),
  onRefresh: () async {},
  onLoad: () async {},
  child: ListView(),
);

支持的滚动组件

  • ListView
  • GridView
  • CustomScrollView
  • SingleChildScrollView
  • PageView
  • 几乎所有 Flutter 可滚动组件

适用场景

  • 列表页面下拉刷新
  • 分页加载更多
  • 聊天界面下拉加载历史
  • 任何需要刷新/加载的滚动页面

总结

flutter_easy_refresh 是 Flutter 生态中最流行的刷新组件之一,其优势包括:

  • 功能全面:支持各种刷新场景
  • 高度可定制:支持自定义样式和动画
  • 易于使用:API 简洁,文档完善
  • 社区活跃:持续更新,问题响应及时

对于需要下拉刷新/上拉加载功能的 Flutter 应用来说,这是首选方案。

分享: