2021-07-19 05:02:17 +00:00
# Angel3 Paginate
2017-05-26 13:21:47 +00:00
2021-07-19 05:02:17 +00:00
[![version ](https://img.shields.io/badge/pub-v3.0.1-brightgreen )](https://pub.dartlang.org/packages/angel3_paginate)
2021-06-26 11:55:17 +00:00
[![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
2017-05-26 13:21:47 +00:00
In your `pubspec.yaml` file:
```yaml
dependencies:
2021-06-26 11:55:17 +00:00
angel3_paginate: ^3.0.0
2017-05-26 13:21:47 +00:00
```
2021-06-26 11:55:17 +00:00
## Usage
2021-07-19 05:02:17 +00:00
This library exports a `Paginator<T>` , which can be used to efficiently produce instances of `PaginationResult<T>` . Pagination results, when serialized to JSON, look like this:
2017-05-26 13:21:47 +00:00
```json
{
"total" : 75,
"items_per_page" : 10,
"previous_page" : 3,
"current_page" : 4,
"next_page" : 5,
"start_index" : 30,
"end_index" : 39,
"data" : ["< items... > "]
}
```
2021-07-19 05:02:17 +00:00
Results can be parsed from Maps using the `PaginationResult<T>.fromMap` constructor, and serialized via their `toJson()` method.
2017-05-26 13:21:47 +00:00
To create a paginator:
```dart
2021-06-26 11:55:17 +00:00
import 'package:angel3_paginate/angel3_paginate.dart';
2017-05-26 13:21:47 +00:00
2021-06-26 11:55:17 +00:00
void main() {
2017-05-26 13:21:47 +00:00
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
2017-05-26 13:36:17 +00:00
p.back(); // Back one page
2017-05-26 13:21:47 +00:00
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.
2021-07-19 05:02:17 +00:00
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.