import 'package:get/get.dart'; import 'navigation_service.dart'; import '../data/providers/auth_provider.dart'; import '../modules/warga/controllers/warga_dashboard_controller.dart'; /// Abstract class untuk mengelola lifecycle service dan dependency abstract class ServiceManager { /// Getter untuk akses NavigationService static NavigationService get navigationService { if (!Get.isRegistered()) { Get.put(NavigationService()); } return Get.find(); } /// Mendaftarkan semua service yang dibutuhkan aplikasi /// Sebaiknya dipanggil di awal aplikasi (main.dart) static void registerServices() { // Register service yang bersifat global dan permanent if (!Get.isRegistered()) { Get.put(NavigationService()); } // Register AuthProvider if not already registered if (!Get.isRegistered()) { Get.put(AuthProvider(), permanent: true); } // Register WargaDashboardController as a permanent controller // This ensures it's always available for the drawer registerWargaDashboardController(); } /// Register WargaDashboardController as a singleton static void registerWargaDashboardController() { // Make sure Auth Provider is registered first if (!Get.isRegistered()) { Get.put(AuthProvider(), permanent: true); } // Register WargaDashboardController if not already registered if (!Get.isRegistered()) { Get.put(WargaDashboardController(), permanent: true); } } /// Mendaftarkan controller untuk suatu page /// Sebaiknya dipanggil di method dependencies() dalam Binding class static void registerController(T controller, {bool permanent = false}) { if (Get.isRegistered()) { Get.delete(force: true); } Get.put(controller, permanent: permanent); } /// Membersihkan controller ketika tidak digunakan /// Sebaiknya dipanggil dalam method onClose() di controller static void cleanupController() { if (Get.isRegistered()) { Get.delete(force: true); } } /// Memeriksa apakah sebuah controller sudah terdaftar static bool isControllerRegistered() { return Get.isRegistered(); } }