From eafc04a0913eec146f1d9dc6e6eaf0e6415c1207 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Tue, 23 Jun 2026 17:57:07 +0300 Subject: [PATCH] Update: 2026-06-23 17:57:07 --- .../home/map/ride_lifecycle_controller.dart | 27 +++++++++++++++++-- .../lib/views/home/map_page_passenger.dart | 10 ++++++- .../lib/views/widgets/error_snakbar.dart | 2 +- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/siro_rider/lib/controller/home/map/ride_lifecycle_controller.dart b/siro_rider/lib/controller/home/map/ride_lifecycle_controller.dart index 15dbc36..2aa7ad6 100644 --- a/siro_rider/lib/controller/home/map/ride_lifecycle_controller.dart +++ b/siro_rider/lib/controller/home/map/ride_lifecycle_controller.dart @@ -58,6 +58,7 @@ import 'package:flutter_confetti/flutter_confetti.dart' hide Circle; import 'package:crypto/crypto.dart'; class RideLifecycleController extends GetxController { + bool isDataInitializedAfterLogin = false; // --- Missing variables from monolithic controller --- String currentRideId = ''; bool isDrawingRoute = false; @@ -4049,9 +4050,31 @@ class RideLifecycleController extends GetxController { await _checkAndRefreshMapStyle(); Get.put(DeepLinkController(), permanent: true); await initilizeGetStorage(); + + final bool isLoggedIn = box.read(BoxName.isVerified) == '1' && + box.read(BoxName.passengerID) != null; + + if (isLoggedIn) { + isDataInitializedAfterLogin = true; + getLocationArea(passengerLocation.latitude, passengerLocation.longitude); + unawaited(_stagePricingAndState()); + unawaited(_stageNiceToHave()); + startMasterTimer(); + } else { + Log.print("RideLifecycleController.onInit: User not logged in, skipping startup API calls."); + } + } + + Future initializeDataAfterLogin() async { + if (isDataInitializedAfterLogin) { + Log.print("RideLifecycleController: Already initialized, skipping duplicate initializeDataAfterLogin."); + return; + } + isDataInitializedAfterLogin = true; + Log.print("RideLifecycleController: Initializing data after successful login..."); getLocationArea(passengerLocation.latitude, passengerLocation.longitude); - unawaited(_stagePricingAndState()); - unawaited(_stageNiceToHave()); + await _stagePricingAndState(); + await _stageNiceToHave(); startMasterTimer(); } diff --git a/siro_rider/lib/views/home/map_page_passenger.dart b/siro_rider/lib/views/home/map_page_passenger.dart index 08d4c08..1c24dea 100644 --- a/siro_rider/lib/views/home/map_page_passenger.dart +++ b/siro_rider/lib/views/home/map_page_passenger.dart @@ -39,10 +39,18 @@ class MapPagePassenger extends StatelessWidget { Get.find(); Get.find(); Get.find(); - Get.find(); + final rideLifecycle = Get.find(); Get.find(); Get.find(); Get.find(); + + // ✅ تهيئة البيانات بعد تسجيل الدخول إن لم تكن قد تهيأت بالفعل + final bool isLoggedIn = box.read(BoxName.isVerified) == '1' && + box.read(BoxName.passengerID) != null; + if (isLoggedIn && !rideLifecycle.isDataInitializedAfterLogin) { + rideLifecycle.initializeDataAfterLogin(); + } + WidgetsBinding.instance.addPostFrameCallback((_) { checkForUpdate(context); }); diff --git a/siro_rider/lib/views/widgets/error_snakbar.dart b/siro_rider/lib/views/widgets/error_snakbar.dart index fe71597..d555cd8 100644 --- a/siro_rider/lib/views/widgets/error_snakbar.dart +++ b/siro_rider/lib/views/widgets/error_snakbar.dart @@ -242,7 +242,7 @@ class _SnackContentState extends State<_SnackContent> // ───────────────────────────────────────────────────────────────────────────── SnackbarController? _show(_SnackVariant variant, String message) { // Prevent crash if Navigator or Overlay context is not yet initialized at early startup - if (Get.context == null || Get.overlayContext == null) { + if (Get.context == null || Get.overlayContext == null || Get.key.currentState?.overlay == null) { debugPrint("⚠️ Cannot show snackbar: Overlay/Navigator is not ready yet. Message: $message"); return null; }