CupertinoSliverRefreshControl class
A sliver widget implementing the iOS-style pull to refresh content control.
When inserted as the first sliver in a scroll view or behind other slivers that still lets the scrollable overscroll in front of this sliver (such as the CupertinoSliverNavigationBar, this widget will:
- Let the user draw inside the overscrolled area via the passed in builder.
- Trigger the provided onRefresh function when overscrolled far enough to pass refreshTriggerPullDistance.
- Continue to hold refreshIndicatorExtent amount of space for the builder to keep drawing inside of as the Future returned by onRefresh processes.
- Scroll away once the onRefresh Future completes.
The builder function will be informed of the current RefreshIndicatorMode when invoking it, except in the RefreshIndicatorMode.inactive state when no space is available and nothing needs to be built. The builder function will otherwise be continuously invoked as the amount of space available changes from overscroll, as the sliver scrolls away after the onRefresh task is done, etc.
Only one refresh can be triggered until the previous refresh has completed and the indicator sliver has retracted at least 90% of the way back.
Can only be used in downward-scrolling vertical lists that overscrolls. In other words, refreshes can't be triggered with lists using ClampingScrollPhysics.
In a typical application, this sliver should be inserted between the app bar sliver such as CupertinoSliverNavigationBar and your main scrollable content's sliver.
See also:
- CustomScrollView, a typical sliver holding scroll view this control should go into.
- developer.apple.com/ios/human-interface-guidelines/controls/refresh-content-controls/
- RefreshIndicator, a Material Design version of the pull-to-refresh paradigm. This widget works differently than RefreshIndicator because instead of being an overlay on top of the scrollable, the CupertinoSliverRefreshControl is part of the scrollable and actively occupies scrollable space.
- Inheritance
- Object
- Diagnosticable
- DiagnosticableTree
- Widget
- StatefulWidget
- CupertinoSliverRefreshControl
Constructors
- CupertinoSliverRefreshControl({Key key, double refreshTriggerPullDistance: _defaultRefreshTriggerPullDistance, double refreshIndicatorExtent: _defaultRefreshIndicatorExtent, RefreshControlIndicatorBuilder builder: buildSimpleRefreshIndicator, RefreshCallback onRefresh })
-
Create a new refresh control for inserting into a list of slivers. [...]
const
Properties
- builder → RefreshControlIndicatorBuilder
-
A builder that's called as this sliver's size changes, and as the state
changes. [...]
final
- onRefresh → RefreshCallback
-
Callback invoked when pulled by refreshTriggerPullDistance. [...]
final
- refreshIndicatorExtent → double
-
The amount of space the refresh indicator sliver will keep holding while
onRefresh's Future is still running. [...]
final
- refreshTriggerPullDistance → double
-
The amount of overscroll the scrollable must be dragged to trigger a reload. [...]
final
- hashCode → int
-
The hash code for this object. [...]
read-only, inherited
- key → Key
-
Controls how one widget replaces another widget in the tree. [...]
final, inherited
- runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
Methods
-
createState(
) → _CupertinoSliverRefreshControlState -
Creates the mutable state for this widget at a given location in the tree. [...]
override
-
createElement(
) → StatefulElement -
Creates a StatefulElement to manage this widget's location in the tree. [...]
inherited
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children. [...]
@protected, inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node. [...]
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a non-existent method or property is accessed. [...]
inherited
-
toDiagnosticsNode(
{String name, DiagnosticsTreeStyle style }) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by toStringDeep. [...]
inherited
-
toString(
{DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String -
Returns a string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne: '', String prefixOtherLines, DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String -
Returns a string representation of this node and its descendants. [...]
inherited
-
toStringShallow(
{String joiner: ', ', DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String -
Returns a one-line detailed description of the object. [...]
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
Operators
-
operator ==(
dynamic other) → bool -
The equality operator. [...]
inherited
Static Methods
-
buildSimpleRefreshIndicator(
BuildContext context, RefreshIndicatorMode refreshState, double pulledExtent, double refreshTriggerPullDistance, double refreshIndicatorExtent) → Widget - Builds a simple refresh indicator that fades in a bottom aligned down arrow before the refresh is triggered, a CupertinoActivityIndicator during the refresh and fades the CupertinoActivityIndicator away when the refresh is done.
-
state(
BuildContext context) → RefreshIndicatorMode -
Retrieve the current state of the CupertinoSliverRefreshControl. The same as the
state that gets passed into the builder function. Used for testing.
@visibleForTesting