jumpToPage method
void
jumpToPage(
- 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,
);
}
}