import 'dart:convert'; import 'package:fl_chart/fl_chart.dart'; import 'package:get/get.dart'; import '../../constant/links.dart'; import '../../models/model/passengers_model.dart'; import '../functions/crud.dart'; class StaticController extends GetxController { Map jsonData1 = {}; Map jsonData2 = {}; List staticList = []; var chartDataPassengers; var chartDataDrivers; var chartDataDriversCalling; var chartDataDriversMatchingNotes; bool isLoading = false; String totalMonthlyPassengers = ''; String totalMonthlyDrivers = ''; late List passengersData; late List driversData; Future fetch() async { isLoading = true; update(); // Notify the observers about the loading state change var res = await CRUD().get( link: AppLink.getPassengersStatic, payload: {}, ); jsonData1 = jsonDecode(res); var jsonResponse = jsonDecode(res) as Map; isLoading = false; final List jsonData = jsonResponse['message']; totalMonthlyPassengers = jsonData[0]['totalMonthly'].toString(); passengersData = jsonData.map((item) { return MonthlyPassengerInstall.fromJson(item); }).toList(); final List spots = passengersData .map((data) => FlSpot( data.day.toDouble(), data.totalPassengers.toDouble(), )) .toList(); chartDataPassengers = spots; update(); // Notify the observers about the data and loading state change } Future fetchDrivers() async { isLoading = true; update(); // Notify the observers about the loading state change var res = await CRUD().get( link: AppLink.getdriverstotalMonthly, payload: {}, ); jsonData2 = jsonDecode(res); var jsonResponse = jsonDecode(res) as Map; isLoading = false; final List jsonData = jsonResponse['message']; staticList = jsonData; totalMonthlyDrivers = jsonData[0]['totalDrivers'].toString(); driversData = jsonData.map((item) { return MonthlyDriverInstall.fromJson(item); }).toList(); final List spots = driversData .map((data) => FlSpot( data.day.toDouble(), data.dailyTotalDrivers.toDouble(), )) .toList(); chartDataDrivers = spots; final List spotsCalling = driversData .map((data) => FlSpot( data.day.toDouble(), data.dailyTotalCallingDrivers.toDouble(), )) .toList(); chartDataDriversCalling = spotsCalling; final List spotsTotalMatchingNotes = driversData .map((data) => FlSpot( data.day.toDouble(), data.dailyMatchingNotes.toDouble(), )) .toList(); chartDataDriversMatchingNotes = spotsTotalMatchingNotes; update(); // Notify the observers about the data and loading state change } Future getAll() async { await fetch(); await fetchDrivers(); } }