import 'dart:convert'; import 'package:get/get.dart'; import '../../constant/links.dart'; import '../../views/widgets/error_snakbar.dart'; import '../functions/crud.dart'; class DriverScheduledRidesController extends GetxController { final CRUD _crud = CRUD(); final bookings = >[].obs; final isLoading = false.obs; @override void onInit() { super.onInit(); fetch(); } Future fetch() async { isLoading.value = true; try { final res = await _crud.post( link: AppLink.scheduledList, payload: {'scope': 'upcoming_driver'}, ); final data = _extract(res); final list = (data?['bookings'] as List?) ?? []; bookings.assignAll( list.map((e) => Map.from(e as Map)).toList()); } catch (e) { mySnackbarError('Failed to fetch scheduled rides'.tr); } finally { isLoading.value = false; } } Map? _extract(dynamic res) { final decoded = res is String ? jsonDecode(res) : res; if (decoded is! Map) { return null; } if (decoded['status'] != 'success') { return null; } final data = decoded['message'] ?? decoded['data']; return data is Map ? Map.from(data) : {}; } }