# Paginate [![version](https://img.shields.io/badge/pub-v3.0.0-brightgreen)](https://pub.dartlang.org/packages/angel3_paginate) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion) [![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/paginate/LICENSE) Platform-agnostic pagination library, with custom support for the [Angel3 framework](https://github.com/dukefirehawk/angel). ## Installation In your `pubspec.yaml` file: ```yaml dependencies: angel3_paginate: ^3.0.0 ``` ## Usage This library exports a `Paginator`, which can be used to efficiently produce instances of `PaginationResult`. Pagination results, when serialized to JSON, look like this: ```json { "total" : 75, "items_per_page" : 10, "previous_page" : 3, "current_page" : 4, "next_page" : 5, "start_index" : 30, "end_index" : 39, "data" : [""] } ``` Results can be parsed from Maps using the `PaginationResult.fromMap` constructor, and serialized via their `toJson()` method. To create a paginator: ```dart import 'package:angel3_paginate/angel3_paginate.dart'; void main() { var p = new Paginator(iterable); // Get the current page (default: page 1) var page = p.current; print(page.total); print(page.startIndex); print(page.data); // The actual items on this page. p.next(); // Advance a page p.back(); // Back one page p.goToPage(10); // Go to page number (1-based, not a 0-based index) } ``` The entire Paginator API is documented, so check out the DartDocs. Paginators by default cache paginations, to improve performance as you shift through pages. This can be especially helpful in a client-side application where your UX involves a fast response time, i.e. a search page.