pageTo method

void pageTo(
  1. dynamic page,
  2. String transition
)

Implementation

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

  if (pageNum == null && page is String) {
    switch (page.trim().toLowerCase()) {
      case 'previous':
      case 'prev':
        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();

  // jump to page
  if (transition == "jump") {
    _controller!.jumpToPage(pageNum - 1);
  }

  // animate to page
  else {
    _controller!.animateToPage(pageNum - 1,
        duration: Duration(milliseconds: diff * 150),
        curve: Curves.easeInOutQuad);
  }
}