{"id":20973508,"url":"https://github.com/edsonbueno/infinite_scroll_pagination","last_synced_at":"2025-05-14T13:07:07.623Z","repository":{"id":38239799,"uuid":"289535025","full_name":"EdsonBueno/infinite_scroll_pagination","owner":"EdsonBueno","description":"Flutter package to help you lazily load and display pages of items as the user scrolls down your screen.","archived":false,"fork":false,"pushed_at":"2025-03-10T12:23:48.000Z","size":4402,"stargazers_count":674,"open_issues_count":13,"forks_count":221,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-04T14:39:08.938Z","etag":null,"topics":["endless-scroll","endless-scrolling","endless-scrolling-flutter","flutter","infinite-scroll","infinite-scrolling","load-more","load-more-flutter","pagination"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/infinite_scroll_pagination","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/EdsonBueno.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}},"created_at":"2020-08-22T17:27:35.000Z","updated_at":"2025-04-03T11:29:38.000Z","dependencies_parsed_at":"2024-01-19T06:56:55.412Z","dependency_job_id":"caaae6df-67e3-47fa-858e-e1b99059a7c3","html_url":"https://github.com/EdsonBueno/infinite_scroll_pagination","commit_stats":{"total_commits":219,"total_committers":11,"mean_commits":19.90909090909091,"dds":"0.26027397260273977","last_synced_commit":"c527f88685bb928c43fc2ad1747db864e45dc63c"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonBueno%2Finfinite_scroll_pagination","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonBueno%2Finfinite_scroll_pagination/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonBueno%2Finfinite_scroll_pagination/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdsonBueno%2Finfinite_scroll_pagination/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EdsonBueno","download_url":"https://codeload.github.com/EdsonBueno/infinite_scroll_pagination/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248469327,"owners_count":21108999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["endless-scroll","endless-scrolling","endless-scrolling-flutter","flutter","infinite-scroll","infinite-scrolling","load-more","load-more-flutter","pagination"],"created_at":"2024-11-19T04:19:58.383Z","updated_at":"2025-04-11T19:46:59.464Z","avatar_url":"https://github.com/EdsonBueno.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/EdsonBueno/infinite_scroll_pagination/master/assets/logo.png\" alt=\"Package Logo with Flutter Favorite Badge\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\t\u003ci\u003eChosen as a \u003ca href=\"https://flutter.dev/docs/development/packages-and-plugins/favorites\" rel=\"noopener\" target=\"_blank\"\u003eFlutter Favorite\u003c/a\u003e by the Flutter Ecosystem Committee\u003c/i\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://pub.dev/packages/infinite_scroll_pagination\" rel=\"noopener\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/pub/v/infinite_scroll_pagination.svg\" alt=\"Pub.dev Badge\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/EdsonBueno/infinite_scroll_pagination/actions\" rel=\"noopener\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/EdsonBueno/infinite_scroll_pagination/workflows/build/badge.svg\" alt=\"GitHub Build Badge\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://codecov.io/gh/EdsonBueno/infinite_scroll_pagination\" rel=\"noopener\" target=\"_blank\"\u003e\u003cimg src=\"https://codecov.io/gh/EdsonBueno/infinite_scroll_pagination/branch/master/graph/badge.svg?token=B0CT995PHU\" alt=\"Code Coverage Badge\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://gitter.im/infinite_scroll_pagination/community\" rel=\"noopener\" target=\"_blank\"\u003e\u003cimg src=\"https://badges.gitter.im/infinite_scroll_pagination/community.svg\" alt=\"Gitter Badge\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/tenhobi/effective_dart\" rel=\"noopener\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/style-effective_dart-40c4ff.svg\" alt=\"Effective Dart Badge\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://opensource.org/licenses/MIT\" rel=\"noopener\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-purple.svg\" alt=\"MIT License Badge\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/EdsonBueno/infinite_scroll_pagination\" rel=\"noopener\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/platform-flutter-ff69b4.svg\" alt=\"Flutter Platform Badge\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n# Infinite Scroll Pagination\n\nUnopinionated, extensible and highly customizable package to help you lazily load and display small chunks of items as the user scrolls down the screen – known as infinite scrolling pagination, endless scrolling pagination, auto-pagination, lazy loading pagination, progressive loading pagination, etc.\n\nDesigned to feel like part of the Flutter framework.\n\n\u003cimg src=\"https://raw.githubusercontent.com/EdsonBueno/infinite_scroll_pagination/master/assets/demo.gif\" alt=\"Example Project\" /\u003e\n\n## Tutorial\n\n[By raywenderlich.com (step-by-step, hands-on, in-depth, and illustrated)](https://www.raywenderlich.com/14214369-infinite-scrolling-pagination-in-flutter).\n\n## Usage\n\n```dart\nclass ListViewScreen extends StatefulWidget {\n  const ListViewScreen({super.key});\n\n  @override\n  State\u003cListViewScreen\u003e createState() =\u003e _ListViewScreenState();\n}\n\nclass _ListViewScreenState extends State\u003cListViewScreen\u003e {\n  late final _pagingController = PagingController\u003cint, Photo\u003e(\n    getNextPageKey: (state) =\u003e state.lastPageIsEmpty ? null : state.nextIntPageKey,\n    fetchPage: (pageKey) =\u003e RemoteApi.getPhotos(pageKey),\n  );\n\n  @override\n  void dispose() {\n    _pagingController.dispose();\n    super.dispose();\n  }\n\n  @override\n  Widget build(BuildContext context) =\u003e PagingListener(\n    controller: _pagingController,\n    builder: (context, state, fetchNextPage) =\u003e PagedListView\u003cint, Photo\u003e(\n      state: state,\n      fetchNextPage: fetchNextPage,\n      builderDelegate: PagedChildBuilderDelegate(\n        itemBuilder: (context, item, index) =\u003e ImageListTile(item: item),\n      ),\n    ),\n  );\n}\n```\n\nFor more usage examples, please take a look at our [cookbook](https://pub.dev/packages/infinite_scroll_pagination/example) or check out the [example project](https://github.com/EdsonBueno/infinite_scroll_pagination/tree/master/example).\n\n## Features\n\n- **Architecture-agnostic**: Works with any state management approach, from [setState](https://flutter.dev/docs/development/data-and-backend/state-mgmt/options#setstate) to [BLoC](https://flutter.dev/docs/development/data-and-backend/state-mgmt/options#bloc--rx). Not even [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html) usage is assumed.\n\n- **Layout-agnostic**: Out-of-the-box widgets corresponding to [GridView](https://pub.dev/documentation/infinite_scroll_pagination/latest/infinite_scroll_pagination/PagedGridView-class.html), [SliverGrid](https://pub.dev/documentation/infinite_scroll_pagination/latest/infinite_scroll_pagination/PagedSliverGrid-class.html), [ListView](https://pub.dev/documentation/infinite_scroll_pagination/latest/infinite_scroll_pagination/PagedListView-class.html) and [SliverList](https://pub.dev/documentation/infinite_scroll_pagination/latest/infinite_scroll_pagination/PagedSliverList-class.html) – including `.separated` constructors. Not enough? You can [easily create a custom layout](https://pub.dev/packages/infinite_scroll_pagination/example#custom-layout).\n\n- **API-agnostic**: By letting you in complete charge of your API calls, **Infinite Scroll Pagination** works with [any pagination strategy](https://nordicapis.com/everything-you-need-to-know-about-api-pagination/).\n\n- **Highly customizable**: [You can change everything](https://pub.dev/packages/infinite_scroll_pagination/example#customizing-indicators). Provide your own progress, error and empty list indicators. Too lazy to change? The defaults will cover you.\n\n- **Extensible**: Seamless integration with [pull-to-refresh](https://pub.dev/packages/infinite_scroll_pagination/example#pull-to-refresh), [searching, filtering and sorting](https://pub.dev/packages/infinite_scroll_pagination/example#searchingfilteringsorting).\n\n- **Listen to state changes**: In addition to displaying widgets to inform the current status, such as progress and error indicators, you can also [use a listener](https://pub.dev/packages/infinite_scroll_pagination/example#listening-to-status-changes) to display dialogs/snackbars/toasts or execute any other action.\n\n## Migration\n\nif you are upgrading the package, please check the [migration guide](https://github.com/EdsonBueno/infinite_scroll_pagination/tree/master/MIGRATION.md) for instructions on how to update your code.\n\n## API Overview\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/EdsonBueno/infinite_scroll_pagination/master/assets/api-diagram.png\" alt=\"API Diagram\" /\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsonbueno%2Finfinite_scroll_pagination","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedsonbueno%2Finfinite_scroll_pagination","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsonbueno%2Finfinite_scroll_pagination/lists"}