Update: 2026-06-23 17:57:07

This commit is contained in:
Hamza-Ayed
2026-06-23 17:57:07 +03:00
parent 6ad7aceee1
commit eafc04a091
3 changed files with 35 additions and 4 deletions

View File

@@ -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<void> 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();
}

View File

@@ -39,10 +39,18 @@ class MapPagePassenger extends StatelessWidget {
Get.find<MapEngineController>();
Get.find<LocationSearchController>();
Get.find<NearbyDriversController>();
Get.find<RideLifecycleController>();
final rideLifecycle = Get.find<RideLifecycleController>();
Get.find<UiInteractionsController>();
Get.find<MyMenuController>();
Get.find<CRUD>();
// ✅ تهيئة البيانات بعد تسجيل الدخول إن لم تكن قد تهيأت بالفعل
final bool isLoggedIn = box.read(BoxName.isVerified) == '1' &&
box.read(BoxName.passengerID) != null;
if (isLoggedIn && !rideLifecycle.isDataInitializedAfterLogin) {
rideLifecycle.initializeDataAfterLogin();
}
WidgetsBinding.instance.addPostFrameCallback((_) {
checkForUpdate(context);
});

View File

@@ -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;
}