NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1660 most downloaded on pub.dev
A flutter widget that provides pull-down refresh and pull-up load.
Last release 5 days ago
03 Oct 2026
Ships unpredictably
gaps range from 2 weeks to 1.9 years
Nearly every release is documented
notes for 43 of 44 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
44 releases · first in 2022
One column per quarter.
Note: This release has breaking changes.
EasyRefresh v4.0.0 is now available on pub.dev.
^3.13.0).material_ui and cupertino_ui. Follow the updated README when migrating.material.dart widgets should stay on easy_refresh: ^3.5.1.| Package | Version |
|---|---|
| easy_refresh | 4.0.0 |
| easy_paging | 4.0.0 |
| easy_refresh_bow | 2.0.0 |
| easy_refresh_bubbles | 2.0.0 |
| easy_refresh_halloween | 2.0.0 |
| easy_refresh_skating | 2.0.0 |
| easy_refresh_space | 2.0.0 |
| easy_refresh_squats | 2.0.0 |
Note: This release has breaking changes.
kBezierSpringBuilderBelow3_32 helper.strokeWidth, strokeAlign, strokeCap, elevation, indicatorMargin, and indicatorPadding on MaterialHeader and MaterialFooter.Theme and localizations from package:material_ui / package:cupertino_ui.package:flutter/material.dart should stay on easy_refresh: ^3.5.1.EasyRefresh.nested, and isNested as nested-safe physics (not bouncing patches).result / RenderBox.size asserts after refresh or load (#627, #652, #908).EasyRefresh.builder preserves Footer overscroll across keyboard-driven viewport changes (#890).ValueNotifier wrappers from ballistic simulation state snapshots (#916).AnimatedSwitcher transitions (#719).maxOverOffset to rebound toward the valid range without returning an invalid boundary delta (#650).IndicatorTriggerMode.onEdge for Header/Footer drag-start triggering while preserving the existing anywhere default (#606).app-release.apk for Android (Android 7.0/API 24 or newer; arm64-v8a, armeabi-v7a, and x86_64).4.0.0+2 (--build-number=2; previous release used versionCode=1). Built with Flutter 3.47.2 / Dart 3.13.2.APK SHA-256:
3ba3cae1ab3b9d1bbd4f59e24e4581e881f3c1473f7a24d42cc399c7b0a04c5d app-release.apk
Note: This release has breaking changes.
material_ui directly; use package:flutter/widgets.dart.FIX: Use withAlpha instead of withValues (https://github.com/xuelongqy/flutter_easy_refresh/issues/911).
FIX : material clamping spring ( #885 ) ( #620 ).
breaking: Flutter >=3.7.0, dart >=2.19.0. Remove some unnecessary compatibility, please update the Flutter version in time, or use the previous versio
fix: Indicator properties cannot be updated #818.
fix: Material style performance optimization #814.
fix: EasyPaging.itemBuilder type inference #762.
fix: When start on refresh, interrupted by loading #785.
- fix: All styles are lost.
Nothing published for this version
fix: BezierIndicator.spinBuilder doesn't work.
fix: IndicatorNotifier._onCanProcess. Null check operator used on a null value #782, #774.
feat: All kind of pointer device are supported by default #777.
fix: Compatible with versions below Flutter3.10 #722.
fix: Avoid an endless loop caused by multiple ListViews nested, Thanks LinXunFeng for PR#681.
fix: Increase the priority of ClassicIndicator.pullIconBuilder #674.
fix: Secondary click event hit area #688, Thanks notbucai for PR#714.
fix: Compatible with Flutter 3.7.
fix: Removed compatibility code for list height changes #646, #671.
fix: Compatible with Flutter2.8.1 and below #619.
fix: CupertinoActivityIndicator renamed to avoid conflicts.
fix: The indicator does not retract when the height of the list changes #618.
fix: Footer's maxOverOffset property does not work.
feat: EasyRefreshController add headerState, footerState #635.
fix: When clamping, triggerWhenRelease is true causing the indicator to be stuck.
feat: Add paging widget [EasyPaging].
fix: [EasyRefreshController.callRefresh] and [EasyRefreshController.callLoad] add force #633 #642. Thanks percival888 for PR#639.
fix: Clamping refresh, causing Material3 AppBar to change color.
fix: ScrollMetrics.minScrollExtent != 0.0, offset calculation error.
fix: [NestedScrollView.viewportDimension] should use outer's #582.
fix: [refreshOnStart] safe area #586.
feat: When the content of the list is not full, the infinite scroll does not cross the bounds #588.
fix: Type 'SpringDescription' not found #638.
fix: processedDuration == Duration.zero, can't rebound #572.
docs: NestedScrollView example.
feat: Indicator add [triggerWhenReach] #348. Trigger immediately when reaching the [triggerOffset].
fix: [viewportDimension] changes may trigger loading.
fix: ClassicIndicator transition animation.
fix: Use notifyListeners after ChangeNotifier disposed. Thanks laiiihz for PR#555.
fix: CupertinoActivityIndicator radius == 0.
> Framework rewrite, stronger refresh widget.
New version
Framework rewrite, stronger refresh widget.
- Supports all scrollable widgets.
- Physics scope, no longer limited to child types.
- Adjustable scroll parameters, infinite possibilities for the indicator.
- Safe area support.
- Indicator position setting.
- fix: .pubignore
- fix: Scores
fix: The screen is not full, [infinite] can not reset.
Your coding agent can read these notes before it upgrades. Set up the MCP server →