import 'package:fikoyt_ui/fikoyt_ui.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; class FikoYTPageController extends PageController { static final Map _instances = {}; static final Map _lastPages = {}; // Son sayfa bilgilerini saklıyoruz final String id; bool hatirla = true; FikoYTPageController._(this.id, int initialPage) : super(initialPage: initialPage) { addListener(_updateLastPage); // Sayfa değişimlerini dinliyoruz } static FikoYTPageController getInstance(String id, {hatirla = true}) { hatirla = hatirla; if (_instances.containsKey(id)) { // print("🔄 [$id] Mevcut instance geri döndü. Son sayfa: ${_lastPages[id] ?? 0}"); // PageView oluşturulduktan sonra jumpToPage çağır if (hatirla) { SchedulerBinding.instance.addPostFrameCallback((_) { if (_instances[id]!.hasClients) { _instances[id]!.jumpToPage(_lastPages[id] ?? 0); } }); } else { SchedulerBinding.instance.addPostFrameCallback((_) { if (_instances[id]!.hasClients) { _instances[id]!.jumpToPage(0); } _lastPages[id] = 0; }); } return _instances[id]!; } final lastPage = _lastPages[id] ?? 0; // Eğer daha önce kaydedilmişse, kaldığı sayfayı al final controller = FikoYTPageController._(id, lastPage); _instances[id] = controller; // print("🆕 [$id] Yeni instance oluşturuldu. Başlangıç Sayfası: $lastPage"); return controller; } void _updateLastPage() { if (hasClients && page != null) { _lastPages[id] = page!.round(); // print("💾 [$id] Yeni sayfa kaydedildi: ${_lastPages[id]}"); } } void git(int page, {Duration duration = const Duration(milliseconds: 1000), Curve curve = Curves.bounceOut}) { SchedulerBinding.instance.addPostFrameCallback((_) { animateToPage(page, duration: duration, curve: curve); }); } void zipla(int page) { SchedulerBinding.instance.addPostFrameCallback((_) { jumpToPage(page); }); } @override void dispose() { _lastPages[id] = hatirla ? (page?.round() ?? _lastPages[id] ?? 0) : 0; // print("🛑 [$id] Son sayfa kaydedildi: ${_lastPages[id]}"); removeListener(_updateLastPage); super.dispose(); } }