jumpToPage method

void jumpToPage(
  1. int page
)

Implementation

void jumpToPage(int page) {
  // في وضع الصفحتين (viewportFraction < 1): محاذاة الفهرس إلى رقم زوجي
  // لضمان عرض الزوج الصحيح (1-2, 3-4, 5-6, ...).
  final isDual = quranPagesController.viewportFraction < 1.0;
  final targetPage = isDual ? page - (page % 2) : page;
  state.currentPageNumber.value = page + 1;
  // تحقق من المتحكم المحلي أولاً (QuranPagesScreen)
  if (_localPagesController != null && _localPagesController!.hasClients) {
    final localIndex = targetPage - _localPagesOffset;
    if (localIndex >= 0 && localIndex < _localPagesCount) {
      log('Jumping to local page: $localIndex (global: $targetPage)',
          name: 'QuranCtrl');
      _localPagesController!.jumpToPage(localIndex);
      return;
    }
  }
  if (quranPagesController.hasClients) {
    log('Jumping to page: $targetPage (requested: $page, isDual: $isDual)',
        name: 'QuranCtrl');
    quranPagesController.jumpToPage(
      targetPage,
    );
  } else {
    log('Creating new PageController for page: $targetPage',
        name: 'QuranCtrl');
    quranPagesController = PreloadPageController(
      initialPage: targetPage,
      keepPage: true,
      viewportFraction: 1.0,
    );
  }
}