stopAutoScroll method

void stopAutoScroll()

إيقاف السكرول التلقائي نهائيًا مع حفظ الصفحة التي وصل إليها المستخدم

Implementation

void stopAutoScroll() {
  // حفظ الصفحة الحالية قبل الإيقاف
  final reachedPage = state.currentScrollPage.value;

  // هل كان السكرول التلقائي فعّالاً؟
  final wasActive = state.isActive.value;

  state.isActive.value = false;
  state.isPaused.value = false;
  _ticker?.stop();
  _ticker?.dispose();
  _ticker = null;

  // تحديث صفحة QuranCtrl والانتقال إليها في الـ PageView الأفقي
  // لا تحفظ إذا لم يكن السكرول التلقائي فعّالاً (مثلاً عند onClose بدون تشغيل)
  if (wasActive && reachedPage > 0) {
    final quranCtrl = QuranCtrl.instance;
    quranCtrl.state.currentPageNumber.value = reachedPage;
    quranCtrl.saveLastPage(reachedPage);
    // الانتقال للصفحة بعد أن يُعاد بناء الـ PageView الأفقي
    WidgetsBinding.instance.addPostFrameCallback((_) {
      quranCtrl.jumpToPage(reachedPage - 1);
    });
  }
}