Line data Source code
1 : import 'package:equatable/equatable.dart'; 2 : import 'package:flutter/foundation.dart'; 3 : 4 : /// Pagination information. 5 : @immutable 6 : class Page extends Equatable { 7 : final int number; 8 : final int size; 9 : 10 : /// Creates a [Page] object. 11 : /// [number] - zero based page index. 12 : /// [size] - the size of the page to be returned. 13 2 : const Page({ 14 : this.number = 0, 15 : this.size, 16 2 : }) : assert(number >= 0, 'Page index must not be less than zero'), 17 2 : assert(size >= 1, 'Page size must not be less than one'); 18 : 19 : /// Creates first page. 20 : /// [size] - the size of the page to be returned. 21 4 : Page.first({int size}) : this(number: 0, size: size); 22 : 23 : /// Returns the offset to be taken according to page and page size. 24 8 : int get offset => size * number; 25 : 26 : /// Returns true when this is the first page. 27 3 : bool get isFirst => number == 0; 28 : 29 : /// Returns next [Page]. 30 10 : Page next() => Page(number: number + 1, size: size); 31 : 32 : /// Returns the previous [Page] or the first [Page] if the current 33 : /// one already is the first one. 34 1 : Page previous() => 35 6 : (number == 0) ? this : Page(number: number - 1, size: size); 36 : 37 0 : @override 38 0 : List<Object> get props => [number, size]; 39 : 40 0 : @override 41 0 : String toString() => 'Page (number: $number, size: $size)'; 42 : }