liquid_pull_to_refresh 1.1.1

  • Readme
  • Changelog
  • Example
  • Installing
  • 97

Liquid Pull To Refresh

A beautiful and custom refresh indicator for flutter highly inspired from Ramotion Pull Down to Refresh.

Table of contents #

Installing #

1. Depend on it #

Add this to your package's pubspec.yaml file:

  liquid_pull_to_refresh: ^1.1.1

2. Install it #

You can install packages from the command line:

with pub:

$ pub get

with Flutter:

$ flutter packages get

3. Import it #

Now in your Dart code, you can use:

import 'package:liquid_pull_to_refresh/liquid_pull_to_refresh.dart';

Usage #

For adding this custom refresh indicator in your flutter app, you have to simply wrap ListView or GridView inside LiquidPullToRefresh. Also you have provide the value of onRefresh parameter which is a refresh callback.

Note - LiquidPullToRefresh can only be used with a vertical scroll view.

For example:

        key: _refreshIndicatorKey,	// key if you want to add
        onRefresh: _handleRefresh,	// refresh callback
        child: ListView(),		// scroll view

If you do not want the opacity transition of child then set showChildOpacityTransition: false. Preview regarding the both form of this widget is follows :-

showChildOpacityTransition: true showChildOpacityTransition: false

Documentation #

LiquidPullToRefresh Class #

Dart attributeDatatypeDescriptionDefault Value
childScrollViewThe widget below this widget in the tree.@required
onRefreshRefreshCallbackA function that's called when the refreshing of page takes place.@required
heightdoubleThe distance from the child's top or bottom edge to where the box will settle after the spring effect.100.0
springAnimationDurationInMillisecondsintDuration in milliseconds of springy effect that occurs when we leave dragging after full drag.1000
borderWidthdoubleBorder width of progressing circle in Progressing Indicator.2.0
showChildOpacityTransitionboolWhether to show child opacity transition or not.true
colorColorThe progress indicator's foreground color.ThemeData.accentColor
backgroundColorColorThe progress indicator's background color.ThemeData.canvasColor
notificationPredicateScrollNotificationPredicateA check that specifies whether a ScrollNotification should be handled by this widget.null
scrollControllerScrollControllerControls the ScrollView child.null

For help on editing package code, view the flutter documentation.

Bugs or Requests #

If you encounter any problems feel free to open an issue. If you feel the library is missing a feature, please raise a ticket on GitHub and I'll look into it. Pull request are also welcome.


Donate #

If you found this project helpful or you learned something from the source code and want to thank me, consider buying me a cup of ☕

License #

Liquid-Pull-To-Refresh is licensed under MIT license. View license.

1.1.1 #

  • Fixed the DiagnosticsNode error with error reporting that occurs with newer versions of Flutter.

1.1.0 #

  • Added new parameter scrollController that can be added to control the ScrollView child.

1.0.2 #

1.0.1 #

  • Fixed dart analysis issue.

1.0.0 #

  • Initial Release.


import 'dart:async';

import 'package:flutter/material.dart';
import 'package:liquid_pull_to_refresh/liquid_pull_to_refresh.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
      home: MyHomePage(title: 'Liquid Pull To Refresh'),

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  _MyHomePageState createState() => _MyHomePageState();

class _MyHomePageState extends State<MyHomePage> {
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
  final GlobalKey<RefreshIndicatorState> _refreshIndicatorKey =
  static final List<String> _items = <String>[

  Future<void> _handleRefresh() {
    final Completer<void> completer = Completer<void>();
    Timer(const Duration(seconds: 3), () {
    return completer.future.then<void>((_) {
          content: const Text('Refresh complete'),
          action: SnackBarAction(
              label: 'RETRY',
              onPressed: () {

  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Stack(
          children: <Widget>[
            Align(alignment: Alignment(-1.0, 0.0), child: Icon(Icons.reorder)),
            Align(alignment: Alignment(-0.3, 0.0), child: Text(widget.title)),
      body: LiquidPullToRefresh(
        key: _refreshIndicatorKey,
        onRefresh: _handleRefresh,
        child: ListView.builder(
          padding: kMaterialListPadding,
          itemCount: _items.length,
          itemBuilder: (BuildContext context, int index) {
            final String item = _items[index];
            return ListTile(
              isThreeLine: true,
              leading: CircleAvatar(child: Text(item)),
              title: Text('This item represents $item.'),
              subtitle: const Text(
                  'Even more additional list item information appears on line three.'),

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  liquid_pull_to_refresh: ^1.1.1

2. Install it

You can install packages from the command line:

with Flutter:

$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:liquid_pull_to_refresh/liquid_pull_to_refresh.dart';
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Apr 8, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.7
  • Flutter: 1.12.13+hotfix.9


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.2.0-dev.68.0 <3.0.0
flutter 0.0.0
Transitive dependencies
collection 1.14.11 1.14.12
meta 1.1.8
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies