{"id":28395226,"url":"https://github.com/mttankkeo/flutter_refresh_indicator","last_synced_at":"2026-05-01T17:33:49.396Z","repository":{"id":293666097,"uuid":"984760045","full_name":"MTtankkeo/flutter_refresh_indicator","owner":"MTtankkeo","description":"This package provides a refresh indicator widget that is far more flexible and native-like than the default Flutter one, built on top of flutter_appbar.","archived":false,"fork":false,"pushed_at":"2025-11-06T00:25:01.000Z","size":4579,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-06T02:26:52.214Z","etag":null,"topics":["flutter","flutter-package","flutter-ui","material-ui","pull-to-refresh","refresh-indicator"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/flutter_refresh_indicator","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MTtankkeo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-16T13:11:54.000Z","updated_at":"2025-11-06T00:25:05.000Z","dependencies_parsed_at":"2025-07-20T00:14:49.816Z","dependency_job_id":"482ce0b0-31b9-40df-84de-51d914eff9f2","html_url":"https://github.com/MTtankkeo/flutter_refresh_indicator","commit_stats":null,"previous_names":["mttankkeo/flutter_refresh_indicator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MTtankkeo/flutter_refresh_indicator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MTtankkeo%2Fflutter_refresh_indicator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MTtankkeo%2Fflutter_refresh_indicator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MTtankkeo%2Fflutter_refresh_indicator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MTtankkeo%2Fflutter_refresh_indicator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MTtankkeo","download_url":"https://codeload.github.com/MTtankkeo/flutter_refresh_indicator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MTtankkeo%2Fflutter_refresh_indicator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32507087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flutter","flutter-package","flutter-ui","material-ui","pull-to-refresh","refresh-indicator"],"created_at":"2025-05-31T19:39:34.528Z","updated_at":"2026-05-01T17:33:49.387Z","avatar_url":"https://github.com/MTtankkeo.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Introduction\nThis package provides a refresh indicator widget that is far more flexible and native-like than the default Flutter one, built on top of [flutter_appbar](https://pub.dev/packages/flutter_appbar).\n\n## Preview\nThe gif image below may appear distorted and choppy due to compression.\n\n![clamping](https://github.com/MTtankkeo/flutter_refresh_indicator/raw/refs/heads/main/image/clamping_preview.gif)\n![bouncing](https://github.com/MTtankkeo/flutter_refresh_indicator/raw/refs/heads/main/image/bouncing_preview.gif)\n\n## Usage\nThe following explains the basic usage of this package.\n\n### When Context\n```dart\nimport 'package:flutter/material.dart' hide RefreshIndicator;\n\n// Other Alias: PullToRefresh and SwipeToRefresh\nRefreshIndicator(\n    onRefresh: ..., // AsyncCallback\n    child: ...\n),\n```\n\n### When Android\nThis widget for ClampingScrollPhysics.\n\n```dart\nClampingRefreshIndicator(\n    onRefresh: ..., // AsyncCallback\n    child: ...\n),\n```\n\n### When IOS\nThis widget for BouncingScrollPhysics.\n\n```dart\nBouncingRefreshIndicator(\n    onRefresh: ..., // AsyncCallback\n    child: ...\n),\n```\n\n### How to define the style globally.\n\n#### Using Material Theme\nThis is the traditional way to define themes in Flutter.\n\n```dart\nMaterialApp(\n    theme: ThemeData(\n        progressIndicatorTheme: ProgressIndicatorThemeData(\n            color: ..., // foregroundColor\n            refreshBackgroundColor: ... // backgroundColor\n        )\n    ),\n);\n```\n\n#### Using PrimaryRefreshIndicator widget\nPrimaryRefreshIndicator defines the refresh indicator style for its descendant widgets, similar to how PrimaryScrollController provides a scroll controller to its descendants.\n\n```dart\nPrimaryRefreshIndicator(\n    clampingIndicatorBuilder: (...), // Custom indicator for Clamping\n    bouncingIndicatorBuilder: (...), // Custom indicator for Bouncing\n)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmttankkeo%2Fflutter_refresh_indicator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmttankkeo%2Fflutter_refresh_indicator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmttankkeo%2Fflutter_refresh_indicator/lists"}