custom_refresh_indicator
Widget that makes it easy to implement a custom pull to refresh gesture.
4.0.2
195K downloads/mo
#859 most downloaded on pub.dev
gonuit/flutter-custom-refresh-indicator
What this package is like to depend on
Last release 6 days ago
18 Aug 2026
Ships unpredictably
gaps range from 2 weeks to 2.1 years
Most releases are documented
notes for 22 of 28 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
55 releases · first in 2019
1 release in the last 12 months
see the full history below
Release timeline
55 releases · Oct 2019 to Aug 2026Releases
latest 55-
4.0.218 Aug 2026Release notes
Open source →- Removed usages of deprecated Flutter APIs. The minimum supported Dart and Flutter versions remain unchanged.
-
4.0.118 Jul 2024Release notes
Open source →- CustomRefreshIndicator:
- Removed deprecated parameters: indicatorCancelDuration, indicatorSettleDuration, indicatorFinalizeDuration and completeStateDuration .If you are still using them, switch to the duration parameter.
- Improved handling of indicator controller changes.
- Fixed missing dragDetails data when overscrolling.
- IndicatorController:
- Added minValue and maxValue static constants.
- Added transform method. Allows you to transform controller animation values from the range 0.0 → 1.5 to another range.
- Added normalize method. Normalizes value by converting it to the range 0.0 → 1.0. This allows the animation to be used directly with most Flutter widgets and tweens. You can still use clamp if you want to remove values above 1.0 instead of transforming the whole range.
- CustomMaterialIndicator:
- Redesigned/reimplemented. Now, when indicatorBuilder argument is not provided, it completely recreates the look and behavior of the built-in RefreshIndicator widget.
- Added CustomMaterialIndicator.adaptive constructor.
- indicatorBuilder parameter is now optional.
- The deprecated parameter withRotation has been removed. It was confusing and was not related to the material indicator design. To add rotation to the indicator, you need to implement rotation yourself 😔.
- Added color, semanticsValue, semanticsLabel and strokeWidth parameters. They are applied only when the default indicatorBuilder is used (given a null value).
- Removed deprecated IndicatorBuilderDelegate and MaterialIndicatorDelegate classes.
- Added TransformedAnimation class that allows transforming the parent animation value.
- Exposed a PositionedIndicatorContainer widget that allows easy positioning of the indicator.
- Example app:
- Updated custom material indicator example.
- Updated application design.
- Added tooltips.
- Added ball indicator example, which is an overview of the drag details based indicator.
- Updated web example.
- CustomRefreshIndicator:
-
4.0.018 Jul 2024Release notes
Open source →Changes:
- CustomRefreshIndicator:
- Removed deprecated parameters: indicatorCancelDuration, indicatorSettleDuration, indicatorFinalizeDuration and completeStateDuration .If you are still using them, switch to the duration parameter.
- Improved handling of indicator controller changes.
- Fixed missing dragDetails data when overscrolling.
- IndicatorController:
- Added minValue and maxValue static constants.
- Added transform method. Allows you to transform controller animation values from the range 0.0 → 1.5 to another range.
- Added normalize method. Normalizes value by converting it to the range 0.0 → 1.0. This allows the animation to be used directly with most Flutter widgets and tweens. You can still use clamp if you want to remove values above 1.0 instead of transforming the whole range.
- CustomMaterialIndicator:
- Redesigned/reimplemented. Now, when indicatorBuilder argument is not provided, it completely recreates the look and behavior of the built-in RefreshIndicator widget.
- Added CustomMaterialIndicator.adaptive constructor.
- indicatorBuilder parameter is now optional.
- The deprecated parameter withRotation has been removed. It was confusing and was not related to the material indicator design. To add rotation to the indicator, you need to implement rotation yourself 😔.
- Added color, semanticsValue, semanticsLabel and strokeWidth parameters. They are applied only when the default indicatorBuilder is used (given a null value).
- Removed deprecated IndicatorBuilderDelegate and MaterialIndicatorDelegate classes.
- Added TransformedAnimation class that allows transforming the parent animation value.
- Exposed a PositionedIndicatorContainer widget that allows easy positioning of the indicator.
- Example app:
- Updated custom material indicator example.
- Updated application design.
- Added tooltips.
- Added ball indicator example, which is an overview of the drag details based indicator.
- Updated web example.
Full Changelog: v3.1.2...v4.0.0
- CustomRefreshIndicator:
-
4.0.0-dev.318 Jul 2024 pre-releaseRelease notes
Open source →Changes:
- CustomRefreshIndicator:
- Removed deprecated parameters: indicatorCancelDuration, indicatorSettleDuration, indicatorFinalizeDuration and completeStateDuration .If you are still using them, switch to the duration parameter.
- Improved handling of indicator controller changes.
- Fixed missing dragDetails data when overscrolling.
- IndicatorController:
- Added minValue and maxValue static constants.
- Added transform method. Allows you to transform controller animation values from the range 0.0 → 1.5 to another range.
- Added normalize method. Normalizes value by converting it to the range 0.0 → 1.0. This allows the animation to be used directly with most Flutter widgets and tweens. You can still use clamp if you want to remove values above 1.0 instead of transforming the whole range.
- CustomMaterialIndicator:
- Redesigned/reimplemented. Now, when indicatorBuilder argument is not provided, it completely recreates the look and behavior of the built-in RefreshIndicator widget.
- Added CustomMaterialIndicator.adaptive constructor.
- indicatorBuilder parameter is now optional.
- The deprecated parameter withRotation has been removed. It was confusing and was not related to the material indicator design. To add rotation to the indicator, you need to implement rotation yourself 😔.
- Added color, semanticsValue, semanticsLabel and strokeWidth parameters. They are applied only when the default indicatorBuilder is used (given a null value).
- Removed deprecated IndicatorBuilderDelegate and MaterialIndicatorDelegate classes.
- Added TransformedAnimation class that allows transforming the parent animation value.
- Exposed a PositionedIndicatorContainer widget that allows easy positioning of the indicator.
- Example app:
- Updated custom material indicator example.
- Updated application design.
- Added tooltips.
- Added ball indicator example, which is an overview of the drag details based indicator.
- Updated web example.
Full Changelog: v4.0.0-dev.2...v4.0.0-dev.3
- CustomRefreshIndicator:
-
4.0.0-dev.212 Jul 2024 pre-releaseRelease notes
Open source →Changes:
- CustomRefreshIndicator:
- Removed deprecated parameters: indicatorCancelDuration, indicatorSettleDuration, indicatorFinalizeDuration and completeStateDuration .If you are still using them, switch to the duration parameter.
- Improved handling of indicator controller changes.
- Fixed missing dragDetails data when overscrolling.
- IndicatorController:
- Added minValue and maxValue static constants.
- Added transform method. Allows you to transform controller animation values from the range 0.0 → 1.5 to another range.
- Added normalize method. Normalizes value by converting it to the range 0.0 → 1.0. This allows the animation to be used directly with most Flutter widgets and tweens. You can still use clamp if you want to remove values above 1.0 instead of transforming the whole range.
- CustomMaterialIndicator:
- Redesigned/reimplemented. Now, when indicatorBuilder argument is not provided, it completely recreates the look and behavior of the built-in RefreshIndicator widget.
- Added CustomMaterialIndicator.adaptive constructor.
- indicatorBuilder parameter is now optional.
- The deprecated parameter withRotation has been removed. It was confusing and was not related to the material indicator design. To add rotation to the indicator, you need to implement rotation yourself 😔.
- Added color, semanticsValue, semanticsLabel and strokeWidth parameters. They are applied only when the default indicatorBuilder is used (given a null value).
- Removed deprecated IndicatorBuilderDelegate and MaterialIndicatorDelegate classes.
- Added TransformedAnimation class that allows transforming the parent animation value.
- Exposed a PositionedIndicatorContainer widget that allows easy positioning of the indicator.
- Example app:
- Updated custom material indicator example.
- Updated application design.
- Added tooltips.
- Added ball indicator example, which is an overview of the drag details based indicator.
- Updated web example.
Full Changelog: v4.0.0-dev.1...v4.0.0-dev.2
- CustomRefreshIndicator:
-
4.0.0-dev.106 Jul 2024 pre-releaseRelease notes
Open source →Changes:
- CustomRefreshIndicator:
- Removed deprecated parameters: indicatorCancelDuration, indicatorSettleDuration, indicatorFinalizeDuration and completeStateDuration .If you are still using them, switch to the duration parameter.
- IndicatorController:
- Added minValue and maxValue static constants.
- Added transform method. Allows you to transform controller animation values from the range 0.0 → 1.5 to another range.
- Added normalize method. Normalizes value by converting it to the range 0.0 → 1.0. This allows the animation to be used directly with most Flutter widgets and tweens. You can still use clamp if you want to remove values above 1.0 instead of transforming the whole range.
- CustomMaterialIndicator:
- Redesigned/reimplemented. Now, when indicatorBuilder argument is not provided, it completely recreates the look and behavior of the built-in RefreshIndicator widget.
- Added CustomMaterialIndicator.adaptive constructor.
- indicatorBuilder parameter is now optional.
- The deprecated parameter withRotation has been removed. It was confusing and was not related to the material indicator design. To add rotation to the indicator, you need to implement rotation yourself 😔.
- Added color, semanticsValue, semanticsLabel and strokeWidth parameters. They are applied only when the default indicatorBuilder is used (given a null value).
- Removed deprecated IndicatorBuilderDelegate and MaterialIndicatorDelegate classes.
- Added TransformedAnimation class that allows transforming the parent animation value.
- Example app:
- Updated custom material indicator example.
Full Changelog: v3.1.1...v4.0.0-dev.1
- CustomRefreshIndicator:
-
3.1.212 Jul 2024Release notes
Open source →Changes
- Deprecated the withRotation argument of the CustomMaterialIndicator widget. The rotation function will be removed in the upcoming version.
- Fixed missing drag detail (IndicatorController.dragDetails) information from scroll events.
Full Changelog: v3.1.1...v3.1.2
Release notes
Open source →- Deprecated the withRotation argument of the CustomMaterialIndicator widget. The rotation function will be removed in the upcoming version.
- Fixed missing drag detail (IndicatorController.dragDetails) information from scroll events.
-
3.1.105 Jul 2024Release notes
Open source → -
3.1.023 Mar 2024Release notes
Open source →- Experimental:
- Added
ClampingWithOverscrollPhysicsscroll physics, that together with indicator controller allows handling overscroll correctly.
- Added
- The indicator's cancel duration is now based on the dragging progress.
- Updated the the dart sdk constraints to
>=2.17.0 <4.0.0
- Experimental:
-
3.1.0-dev.105 Jan 2024 pre-releaseRelease notes
Open source →Changes:
- Experimental:
- Added
ClampingWithOverscrollPhysicsscroll physics, that together with indicator controller allows handling overscroll correctly.
- Added
- The indicator's cancel duration is now based on the dragging progress.
- Updated the dart sdk constraints to
>=2.17.0 <4.0.0 - Updated example app native dependencies
Full Changelog: v3.0.0...v3.1.0-dev.1
- Experimental:
-
3.0.006 Nov 2023Release notes
Open source →Changes:
- CustomRefreshIndicator:
- Deprecated indicatorFinalizeDuration, indicatorSettleDuration, indicatorCancelDuration and completeStateDuration parameters in favor of durations.
- The indicator widget will now be rebuilt every time state changes, even if the autoRebuilt parameter is set to false. This will make managing the state of the indicator widget simpler.
- Deprecated IndicatorDelegate and MaterialIndicatorDelegate in favor of CustomMaterialIndicator widget.
- IndicatorController:
- The controller now extends Animation. This allows it to be used directly with Transition widgets to further improve animation performance.
- New ClampedAnimation class for constraining the IndicatorController animation value within a specific range using the clamp method.
- Drag interaction details are now available, enabling pointer-position-based animations.
- Example app:
- The checkmark indicator example has been simplified.
- Minor corrections to the envelope indicator.
- Added image precaching.
- Removed unused code.
Full Changelog: v2.2.1...v3.0.0
Release notes
Open source →- CustomRefreshIndicator:
- Deprecated indicatorFinalizeDuration, indicatorSettleDuration, indicatorCancelDuration and completeStateDuration parameters in favor of durations.
- The indicator widget will now be rebuilt every time state changes, even if the autoRebuilt parameter is set to false. This will make managing the state of the indicator widget simpler.
- Deprecated IndicatorDelegate and MaterialIndicatorDelegate in favor of CustomMaterialIndicator widget.
- IndicatorController:
- The controller now extends Animation<double>. This allows it to be used directly with Transition widgets to further improve animation performance.
- New ClampedAnimation class for constraining the IndicatorController animation value within a specific range using the clamp method.
- Drag interaction details are now available, enabling pointer-position-based animations.
- Example app:
- The checkmark indicator example has been simplified.
- Minor corrections to the envelope indicator.
- Added image precaching.
- Removed unused code.
- CustomRefreshIndicator:
-
3.0.0-beta.306 Nov 2023 pre-releaseNothing published for this version
-
3.0.0-beta.204 Nov 2023 pre-releaseNothing published for this version
-
3.0.0-beta.104 Nov 2023 pre-releaseNothing published for this version
-
2.2.113 Jun 2023 -
2.2.013 Jun 2023Release notes
Open source →- Added clipBehavior and the elevation arguments of the MaterialIndicatorDelegate class.
-
2.1.013 Jun 2023 -
2.0.104 Nov 2022Release notes
Open source →- Added missing isCanceling and isSettling getters for IndicatorState and IndicatorController enum.
-
2.0.025 Oct 2022Nothing published for this version
-
2.0.0-dev.1225 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-dev.1125 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-dev.1025 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-dev.925 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-dev.825 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-dev.724 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-dev.624 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-dev.524 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-dev.422 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-dev.321 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-dev.230 Sep 2022 pre-releaseNothing published for this version
-
2.0.0-dev.129 Sep 2022 pre-releaseNothing published for this version
-
2.0.0-beta.124 Oct 2022 pre-releaseNothing published for this version
-
1.2.114 Jun 2022 -
1.2.003 Jun 2022 -
1.1.203 Jun 2022 -
1.1.102 Apr 2022 -
1.1.002 Apr 2022Release notes
Open source →Fixes:
- Handle errors thrown from the
onRefreshmethod.
Improvements:
- Updated example app
- Added support for the Android embedding v2
- Added web support
- Added windows support.
- Added a web based demo app (url in the readme file).
- Replaced the deprecated
disallowGlowmethod calls withdisallowIndicator. - Added
onStateChangedfunction argument that allows tracking indicator state changes. - The
IndicatorStateHelperclass is now deprecated in favor ofonStateChangefunction andIndicatorStateChangeclass. - Initial support for programmatically-controlled indicators has been added. Added the
show,hideandrefreshmethods to theCustomRefreshIndicatorStateclass. It can be accessed via GlobalKey. Take a look at an programmatically-controlled screen example. - Use the
flutter_lintspackage for analysis. - Deprecate
leadingGlowVisibleandtrailingGlowVisiblein favor ofleadingScrollIndicatorVisibleandtrailingScrollIndicatorVisiblearguments. - Added
reversedargument that allows you to trigger a refresh indicator from the end of the list. - Added
envelopeexample. - Added
pull to fetch moreexample.
- Handle errors thrown from the
-
1.1.0+102 Apr 2022Nothing published for this version
-
1.1.0+202 Apr 2022Nothing published for this version
-
1.1.0-dev.302 Apr 2022 pre-releaseNothing published for this version
-
1.1.0-dev.202 Apr 2022 pre-releaseNothing published for this version
-
1.1.0-dev.131 Mar 2022 pre-releaseNothing published for this version
-
1.0.024 May 2021Release notes
Open source →- Stable nullsafety release.
- BREAKING: opt into null safety
- Dart SDK constraints: >=2.12.0-0 <3.0.0
- BREAKING: Removed
prevStatefromIndicatorControllerclass. Because flutter only marks the widget that it is ready for rebuild, it is possible that the controller state will change more than once during a single frame what causes one or more steps to be skipped. To still useprevStateanddidChangeStatemethod, you can useIndicatorStateHelper. Take a look atcheck_mark_indicator.dartorwarp_indicator.dartfor example usage. - Added
IndicatorStateHelperclass. - Added
IndicatorControllerunit tests. - Added warp indicator example.
- Added
stopDragmethod to theIndicatorControllerclass. It allows you to stop current user drag.
-
1.0.0-nullsafety.122 Apr 2021 pre-releaseNothing published for this version
-
1.0.0-nullsafety.023 Feb 2021 pre-releaseNothing published for this version
-
0.9.001 Oct 2020 -
0.9.0-dev.221 Aug 2020 pre-releaseRelease notes
Open source →- Added
isCompleteandwasCompletecontroller getters. - Removed
axisproperty as it can be handled bynotificationPredicate.
- Added
-
0.9.0-dev.112 Aug 2020 pre-releaseRelease notes
Open source →- Added optional
completeindicator state together withcompleteStateDurationparameter. IndicatorControllerchanges:- Added
previousStateproperty. - Added
didStateChangehelper method. - Added
wasArmed,wasDragging,wasLoading,wasHidingandwasIdleproperties.
- Added
- Added
notificationPredicateproperty to theCustomRefreshIndicatorwidget. - Example app:
- Added initial version of
check_mark_indicator. Example that shows how to make use ofcompletestate.
- Added initial version of
- Added optional
-
0.8.011 Apr 2020Nothing published for this version
-
0.8.0+112 Apr 2020Nothing published for this version
-
0.2.107 Apr 2020 -
0.2.012 Nov 2019Release notes
Open source →- Added support for
BouncingScrollPhysics- ios default scroll physics - Improved readme
- Added support for
-
0.1.128 Oct 2019 -
0.1.028 Oct 2019Release notes
Open source →- Added basic
CustomRefreshIndicatorwidget withCustomRefreshIndicatorDataclass. - Added
SimpleIndicatorContainerwidget which simulate defaultRefreshIndicatorcontainer - Added examples:
- inbox
- simple
- blur
- Added basic
-
0.0.128 Oct 2019Nothing published for this version