page method

void page(
  1. dynamic page
)

Implementation

void page(dynamic page)
{
  int currentPage = _controller!.page!.toInt() + 1;
  int? pageNum = S.toInt(page);
  int pages = widget.model.pages.length;

  if (pageNum == null && page is String) {
    switch (page.trim().toLowerCase()) {
      case 'previous':
        pageNum = currentPage - 1;
        if (pageNum < 1) pageNum = pages;
        break;
      case 'next':
        pageNum = currentPage + 1;
        if (pageNum > pages) pageNum = 1;
        break;
      case 'first':
        pageNum = 1;
        break;
      case 'last':
        pageNum = pages;
        break;
      default:
        break;
    }
  }

  pageNum ??= 1;

  if (pageNum > pages) pageNum = 1;
  if (pageNum < 1) pageNum = pages;
  int diff = (currentPage - pageNum).abs();
  if (diff > 9) {
    _controller!.jumpToPage(pageNum - 1);
  } else {
    _controller!.animateToPage(pageNum - 1, duration: Duration(milliseconds: diff * 150), curve: Curves.easeInOutQuad);
  }
}