diff --git a/lib/constants/app_constants.dart b/lib/constants/app_constants.dart index 18d3623..b48427a 100644 --- a/lib/constants/app_constants.dart +++ b/lib/constants/app_constants.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:logger/logger.dart'; +import 'package:hmg_qline/models/ticket_model.dart'; +import 'package:hmg_qline/utilities/enums.dart'; bool useTestIP = false; @@ -106,7 +107,7 @@ class AppConstants { static String testIP = '12.4.5.1'; // projectID.QlineType.ScreenType.AnyNumber (1 to 10) static int thresholdForListUI = 3; - static double currentBuildVersion = 8.6; + static double currentBuildVersion = 8.7; static double clearLogsHoursThreshold = 48; } @@ -171,327 +172,55 @@ class CacheConstants { // } class MockJsonRepo { - static Map globalConfigurationMockResponse = { - "id": 1, - "configType": 2, - "description": "Main Kiosk Config", - "counterStart": 1, - "counterEnd": 10, - "concurrentCallDelaySec": 5, - "voiceType": 1, - "voiceTypeText": "Standard Voice", - "screenLanguage": 1, - "screenLanguageText": "English", - "textDirection": 1, - "voiceLanguage": 1, - "voiceLanguageText": "English", - "screenMaxDisplayPatients": 8, - "isNotiReq": true, - "prioritySMS": 1, - "priorityWhatsApp": 2, - "priorityEmail": 3, - "ticketNoText": "Ticket Number", - "pleaseVisitCounterText": "Please Visit Counter", - "counterText": "Counter", - "roomText": "Room", - "roomNo": 101, - "isRoomNoRequired": true, - "queueNoText": "Queue Number", - "callForText": "Call For", - "currentServeText": "Current Serve", - "maxText": "Max Temp", - "minText": "Min Temp", - "nextPrayerText": "Next Prayer", - "weatherText": "Weather", - "fajarText": "Fajar", - "dhuhrText": "Dhuhr", - "asarText": "Asar", - "maghribText": "Maghrib", - "ishaText": "Isha", - "isActive": true, - "createdBy": 101, - "createdOn": "2025-07-15T08:00:00Z", - "editedBy": 102, - "editedOn": "2025-07-15T10:00:00Z", - "isToneReq": false, - "isVoiceReq": false, - "orientationType": 1, - "isTurnOn": true, - "waitingAreaType": 1, - "gender": 1, - "isWeatherReq": true, - "isPrayerTimeReq": true, - "isRssFeedReq": true, - "qType": 1, - "screenType": 1, - "projectID": 123, - "projectLatitude": 24.722136, - "projectLongitude": 46.774303, - "cityKey": 999, - "kioskQueue": [ - {"id": 1, "name": "General Queue", "code": "GQ", "isActive": true}, - {"id": 2, "name": "VIP Queue", "code": "VIP", "isActive": true} - ], - "kioskConfig": [ - {"id": 1, "languageCode": "en", "languageName": "English", "isDefault": true}, - {"id": 2, "languageCode": "ar", "languageName": "Arabic", "isDefault": false} - ] - }; - - static List> mockPatientTicketResponse = [ - { - "qType": 1, - "screenType": 2, - "connectionID": "abc-123-connection", - "data": [ - { - "id": 101, - "patientID": 202, - "laB_QGroupID": 303, - "queueNo": "A13", - "counterBatchNo": 1, - "calledBy": 404, - "calledOn": "2025-07-15T08:30:00Z", - "servedOn": "2025-07-15T08:45:00Z", - "patientName": "John Doe", - "mobileNo": "+966500000000", - "patientEmail": "john@example.com", - "preferredLang": 1, - "ticketNoText": "Ticket No", - "pleaseVisitCounterText": "Please Visit Counter", - "patientGender": 1, - "roomNo": "R2", - "isActive": true, - "createdBy": 999, - "editedBy": 1000, - "editedOn": "2025-07-15T08:10:00Z", - "createdOn": "2025-07-15T08:00:00Z", - "doctorNameN": "Dr. Smith", - "callType": 2, - "queueNoM": "B45", - "callNoStr": "Call #1001", - "isQueue": true, - "isToneReq": true, - "isVoiceReq": true, - "orientationType ": 1, - "isTurnOn": true, - "concurrentCallDelaySec": 3, - "crTypeAckIP": "192.168.1.100", - "voiceLanguage": 1, - "voiceLanguageText": "English", - "vitalSignText": "Vital Sign", - "doctorText": "Doctor", - "procedureText": "Procedure", - "vaccinationText": "Vaccination", - "nebulizationText": "Nebulization", - "callForVitalSignText": "Calling for Vital Sign", - "callForDoctorText": "Calling for Doctor", - "callForProcedureText": "Calling for Procedure", - "callForVaccinationText": "Calling for Vaccination", - "callForNebulizationText": "Calling for Nebulization", - "roomText": "Room", - "queueNoText": "Queue No", - "callForText": "Call For" - }, - { - "id": 101, - "patientID": 202, - "laB_QGroupID": 303, - "queueNo": "B21", - "counterBatchNo": 1, - "calledBy": 404, - "calledOn": "2025-07-15T08:30:00Z", - "servedOn": "2025-07-15T08:45:00Z", - "patientName": "John Doe", - "mobileNo": "+966500000000", - "patientEmail": "john@example.com", - "preferredLang": 1, - "ticketNoText": "Ticket No", - "pleaseVisitCounterText": "Please Visit Counter", - "patientGender": 1, - "roomNo": "R3", - "isActive": true, - "createdBy": 999, - "editedBy": 1000, - "editedOn": "2025-07-15T08:10:00Z", - "createdOn": "2025-07-15T08:00:00Z", - "doctorNameN": "Dr. Smith", - "callType": 3, - "queueNoM": "B45", - "callNoStr": "Call #1001", - "isQueue": true, - "isToneReq": true, - "isVoiceReq": true, - "orientationType": 1, - "isTurnOn": true, - "concurrentCallDelaySec": 3, - "crTypeAckIP": "192.168.1.100", - "voiceLanguage": 1, - "voiceLanguageText": "English", - "vitalSignText": "Vital Sign", - "doctorText": "Doctor", - "procedureText": "Procedure", - "vaccinationText": "Vaccination", - "nebulizationText": "Nebulization", - "callForVitalSignText": "Calling for Vital Sign", - "callForDoctorText": "Calling for Doctor", - "callForProcedureText": "Calling for Procedure", - "callForVaccinationText": "Calling for Vaccination", - "callForNebulizationText": "Calling for Nebulization", - "roomText": "Room", - "queueNoText": "Queue No", - "callForText": "Call For" - }, - { - "id": 101, - "patientID": 202, - "laB_QGroupID": 303, - "queueNo": "C07", - "counterBatchNo": 1, - "calledBy": 404, - "calledOn": "2025-07-15T08:30:00Z", - "servedOn": "2025-07-15T08:45:00Z", - "patientName": "John Doe", - "mobileNo": "+966500000000", - "patientEmail": "john@example.com", - "preferredLang": 1, - "ticketNoText": "Ticket No", - "pleaseVisitCounterText": "Please Visit Counter", - "patientGender": 1, - "roomNo": "R4", - "isActive": true, - "createdBy": 999, - "editedBy": 1000, - "editedOn": "2025-07-15T08:10:00Z", - "createdOn": "2025-07-15T08:00:00Z", - "doctorNameN": "Dr. Smith", - "callType": 4, - "queueNoM": "B45", - "callNoStr": "Call #1001", - "isQueue": true, - "isToneReq": true, - "isVoiceReq": true, - "orientationType": 1, - "isTurnOn": true, - "concurrentCallDelaySec": 3, - "crTypeAckIP": "192.168.1.100", - "voiceLanguage": 1, - "voiceLanguageText": "English", - "vitalSignText": "Vital Sign", - "doctorText": "Doctor", - "procedureText": "Procedure", - "vaccinationText": "Vaccination", - "nebulizationText": "Nebulization", - "callForVitalSignText": "Calling for Vital Sign", - "callForDoctorText": "Calling for Doctor", - "callForProcedureText": "Calling for Procedure", - "callForVaccinationText": "Calling for Vaccination", - "callForNebulizationText": "Calling for Nebulization", - "roomText": "Room", - "queueNoText": "Queue No", - "callForText": "Call For" - }, - { - "id": 101, - "patientID": 202, - "laB_QGroupID": 303, - "queueNo": "D11", - "counterBatchNo": 1, - "calledBy": 404, - "calledOn": "2025-07-15T08:30:00Z", - "servedOn": "2025-07-15T08:45:00Z", - "patientName": "John Doe", - "mobileNo": "+966500000000", - "patientEmail": "john@example.com", - "preferredLang": 1, - "ticketNoText": "Ticket No", - "pleaseVisitCounterText": "Please Visit Counter", - "patientGender": 1, - "roomNo": "R5", - "isActive": true, - "createdBy": 999, - "editedBy": 1000, - "editedOn": "2025-07-15T08:10:00Z", - "createdOn": "2025-07-15T08:00:00Z", - "doctorNameN": "Dr. Smith", - "callType": 5, - "queueNoM": "B45", - "callNoStr": "Call #1001", - "isQueue": true, - "isToneReq": true, - "isVoiceReq": true, - "orientationType": 1, - "isTurnOn": true, - "concurrentCallDelaySec": 3, - "crTypeAckIP": "192.168.1.100", - "voiceLanguage": 1, - "voiceLanguageText": "English", - "vitalSignText": "Vital Sign", - "doctorText": "Doctor", - "procedureText": "Procedure", - "vaccinationText": "Vaccination", - "nebulizationText": "Nebulization", - "callForVitalSignText": "Calling for Vital Sign", - "callForDoctorText": "Calling for Doctor", - "callForProcedureText": "Calling for Procedure", - "callForVaccinationText": "Calling for Vaccination", - "callForNebulizationText": "Calling for Nebulization", - "roomText": "Room", - "queueNoText": "Queue No", - "callForText": "Call For" - }, - { - "id": 101, - "patientID": 202, - "laB_QGroupID": 303, - "queueNo": "E20", - "counterBatchNo": 1, - "calledBy": 404, - "calledOn": "2025-07-15T08:30:00Z", - "servedOn": "2025-07-15T08:45:00Z", - "patientName": "John Doe", - "mobileNo": "+966500000000", - "patientEmail": "john@example.com", - "preferredLang": 1, - "ticketNoText": "Ticket No", - "pleaseVisitCounterText": "Please Visit Counter", - "patientGender": 1, - "roomNo": "R6", - "isActive": true, - "createdBy": 999, - "editedBy": 1000, - "editedOn": "2025-07-15T08:10:00Z", - "createdOn": "2025-07-15T08:00:00Z", - "doctorNameN": "Dr. Smith", - "callType": 6, - "queueNoM": "B45", - "callNoStr": "Call #1001", - "isQueue": true, - "isToneReq": true, - "isVoiceReq": true, - "orientationType": 1, - "isTurnOn": true, - "concurrentCallDelaySec": 3, - "crTypeAckIP": "192.168.1.100", - "voiceLanguage": 1, - "voiceLanguageText": "English", - "vitalSignText": "Vital Sign", - "doctorText": "Doctor", - "procedureText": "Procedure", - "vaccinationText": "Vaccination", - "nebulizationText": "Nebulization", - "callForVitalSignText": "Calling for Vital Sign", - "callForDoctorText": "Calling for Doctor", - "callForProcedureText": "Calling for Procedure", - "callForVaccinationText": "Calling for Vaccination", - "callForNebulizationText": "Calling for Nebulization", - "roomText": "Room", - "queueNoText": "Queue No", - "callForText": "Call For" - } - ] - } - ]; + static TicketData ticket = TicketData( + id: 189805, + patientID: 4292695, + laBQGroupID: null, + queueNo: 'W-T-4', + counterBatchNo: null, + calledBy: null, + calledOn: null, + servedOn: null, + patientName: null, + mobileNo: '0598544522', + patientEmail: 'munira.ali@hotmail.com', + preferredLang: 2, + voiceLanguageEnum: LanguageEnum.arabic, + ticketNoText: 'رقم التذكرة', + postVoiceText: 'التوجه الى غرفة قياس العلامات الحيوية', + patientGender: 2, + roomNo: 'D 12', + isActive: null, + createdBy: null, + editedBy: null, + editedOn: DateTime.parse('2025-08-18 15:09:03.633'), + createdOn: DateTime.parse('2025-08-18 15:06:07.363'), + doctorNameN: null, + callTypeEnum: CallTypeEnum.doctor, + queueNoM: 'W-T-4', + callNoStr: 'W_T-4', + isQueue: false, + isToneReq: false, + isVoiceReq: false, + orientationType: 0, + isTurnOn: false, + concurrentCallDelaySec: 0, + crTypeAckIP: null, + voiceLanguageText: 'English', + vitalSignText: 'علامة حيوية', + doctorText: 'الطبيب', + procedureText: 'الاجراءات', + vaccinationText: 'المطاعيم', + nebulizationText: 'التنفس', + callForVitalSignText: 'التوجه الى غرفة قياس العلامات الحيوية', + callForDoctorText: 'التوجه الى الطبيب', + callForProcedureText: 'التوجه الى غرفة الإجراءات', + callForVaccinationText: 'التوجه الى غرفة المطاعيم', + callForNebulizationText: 'التوجه الى غرفة التنفس', + roomText: 'غرفة', + queueNoText: 'رقم الانتظار', + callForText: 'التوجه الى', + ); } // RAW DATA: diff --git a/lib/services/cache_service.dart b/lib/services/cache_service.dart index 2560bfe..6c8bd61 100644 --- a/lib/services/cache_service.dart +++ b/lib/services/cache_service.dart @@ -47,6 +47,6 @@ class CacheServiceImp implements CacheService { @override Future setLastTimeLogsCleared({required int lastTimeCleared}) async { - await preferencesInstance.setInt(CacheConstants.lastTimeUpdated, lastTimeCleared); + await preferencesInstance.setString(CacheConstants.lastTimeUpdated, lastTimeCleared.toString()); } } diff --git a/lib/services/text_to_speech_service.dart b/lib/services/text_to_speech_service.dart index abe8f3c..b24e149 100644 --- a/lib/services/text_to_speech_service.dart +++ b/lib/services/text_to_speech_service.dart @@ -15,7 +15,7 @@ abstract class TextToSpeechService { bool isMute = false, }); - Future speechTextTest(String test); + Future speechTextTest(TicketData ticket); void listenToTextToSpeechEvents({required Function() onVoiceCompleted}); } @@ -28,23 +28,118 @@ class TextToSpeechServiceImp implements TextToSpeechService { double volume = 1.0; double pitch = 0.6; - double rate = 0.2; + double speech = 0.4; @override - Future speechTextTest(String test) async { - log("lang: ${await textToSpeechInstance.areLanguagesInstalled(["en", "ar"])}"); - log("getDefaultEngine: ${await textToSpeechInstance.getDefaultEngine}"); - log("getEngines: ${await textToSpeechInstance.getEngines}"); - - try { - await textToSpeechInstance.setLanguage(LanguageEnum.english.enumToString()); - } catch (e) { - log("error setting language english: ${e.toString()}"); + Future speechTextTest(TicketData ticket) async { + const ttsGoogleEngine = 'com.google.android.tts'; + LanguageEnum langEnum = ticket.voiceLanguageEnum; + List engines = await textToSpeechInstance.getEngines; + if (engines.contains(ttsGoogleEngine)) { + await textToSpeechInstance.setEngine(ttsGoogleEngine); + } + textToSpeechInstance.setVolume(1.0); + textToSpeechInstance.setSpeechRate(speech); + + + if (langEnum == LanguageEnum.arabic) { + try { + await textToSpeechInstance.setLanguage(LanguageEnum.arabic.enumToString()); + } catch (e) { + log("error setting language english: ${e.toString()}"); + } + } else if (langEnum == LanguageEnum.english) { + try { + await textToSpeechInstance.setLanguage(LanguageEnum.english.enumToString()); + } catch (e) { + log("error setting language english: ${e.toString()}"); + } } - textToSpeechInstance.setSpeechRate(0.37); - textToSpeechInstance.setPitch(0.85); + String preVoice = ticket.ticketNoText; + String postVoice = ticket.postVoiceText; + if (preVoice.isNotEmpty) { + preVoice = '$preVoice..'; + } + String ticketNo = ticket.queueNo!.trim().toString(); - await textToSpeechInstance.speak(test); + log("areLanguagesInstalled: ${await textToSpeechInstance.areLanguagesInstalled(["en-US", "ar-SA"])}"); + + log("lang: $langEnum"); + log("preVoice: $preVoice"); + log("postVoice: $postVoice"); + log("ticketNo: $ticketNo"); + + String patientAlpha = ""; + String patientNumeric = ""; + String clinicName = ""; + + bool isClinicNameAdded = (ticket.queueNo != ticket.callNoStr); + + if (isClinicNameAdded) { + var queueNo = ""; + var clinic = ticketNo.split(" "); + if (clinic.length > 1) { + clinicName = clinic[0]; + queueNo = clinic[1]; + } else { + queueNo = ticketNo; + } + + var queueNoArray = queueNo.split("-"); + if (queueNoArray.length > 2) { + patientAlpha = "${queueNoArray[0]} .. ${queueNoArray[1]}"; + patientNumeric = queueNoArray[2]; + } else { + patientAlpha = queueNoArray[0]; + patientNumeric = queueNoArray[1]; + } + } else { + var queueNoArray = ticketNo.split("-"); + if (queueNoArray.length > 2) { + patientAlpha = "${queueNoArray[0]} .. ${queueNoArray[1]}"; + patientNumeric = queueNoArray[2]; + } else { + patientAlpha = queueNoArray[0]; + patientNumeric = queueNoArray[1]; + } + } + + patientAlpha = patientAlpha.split('').join(' .. '); + String roomNo = ""; + + log("I will now all this:{ $preVoice .. $clinicName .. $patientAlpha .. $patientNumeric .. $postVoice $roomNo } "); + + if (langEnum == LanguageEnum.english) { + await textToSpeechInstance.speak("$preVoice .. $clinicName .. $patientAlpha .. $patientNumeric .. $postVoice $roomNo"); + return; + } + + if (isNeedToBreakVoiceForArabic) { + await textToSpeechInstance.awaitSpeakCompletion(true); + + isSpeechCompleted = false; + if (preVoice.isNotEmpty) { + await textToSpeechInstance.speak("$preVoice "); + } + try { + await textToSpeechInstance.setLanguage(LanguageEnum.english.enumToString()); + } catch (e) { + log("error setting language english: ${e.toString()}"); + } + await textToSpeechInstance.speak("$patientAlpha .. $patientNumeric"); + + try { + await textToSpeechInstance.setLanguage(langEnum.enumToString()); + } catch (e) { + log("error setting language langEnum: ${e.toString()}"); + } + + await textToSpeechInstance.speak("$postVoice $roomNo").whenComplete(() { + isSpeechCompleted = true; + }); + } else { + await textToSpeechInstance.speak("$preVoice .. $clinicName .. $patientAlpha .. $patientNumeric .. $postVoice $roomNo"); + } } @override @@ -53,6 +148,7 @@ class TextToSpeechServiceImp implements TextToSpeechService { required GlobalConfigurationsModel globalConfigurationsModel, bool isMute = false, }) async { + log("ticketdata i got: ${ticket.ticketModel.toString()}"); const ttsGoogleEngine = 'com.google.android.tts'; LanguageEnum langEnum = ticket.ticketModel!.voiceLanguageEnum; List engines = await textToSpeechInstance.getEngines; @@ -70,15 +166,13 @@ class TextToSpeechServiceImp implements TextToSpeechService { await textToSpeechInstance.setLanguage(LanguageEnum.arabic.enumToString()); } catch (e) { log("error setting language english: ${e.toString()}"); - } // textToSpeechInstance.setSpeechRate(0.45); - // textToSpeechInstance.setPitch(0.9); + } } else if (langEnum == LanguageEnum.english) { try { await textToSpeechInstance.setLanguage(LanguageEnum.english.enumToString()); } catch (e) { log("error setting language english: ${e.toString()}"); - } // textToSpeechInstance.setSpeechRate(0.37); - // textToSpeechInstance.setPitch(0.85); + } } String preVoice = ticket.ticketModel!.ticketNoText; String postVoice = ''; @@ -98,8 +192,7 @@ class TextToSpeechServiceImp implements TextToSpeechService { String ticketNo = ticket.ticketModel!.queueNo!.trim().toString(); - log("lang: ${await textToSpeechInstance.areLanguagesInstalled(["en-US", "ar-SA"])}"); - + log("areLanguagesInstalled: ${await textToSpeechInstance.areLanguagesInstalled(["en-US", "ar-SA"])}"); log("lang: $langEnum"); log("preVoice: $preVoice"); log("postVoice: $postVoice"); diff --git a/lib/utilities/enums.dart b/lib/utilities/enums.dart index 254c7d1..7044d16 100644 --- a/lib/utilities/enums.dart +++ b/lib/utilities/enums.dart @@ -4,6 +4,16 @@ enum ViewState { error, } +enum CallTypeEnum { + vitalSign, // 1 + doctor, // 2 + procedure, // 3 + vaccination, // 4 + nebulization, // 5 + none, // 6 +} + + enum ScreenOrientationEnum { portraitUp, // 1 portraitDown, // 2 @@ -43,3 +53,5 @@ enum LogTypeEnum { data, error, } + + diff --git a/lib/utilities/extensions.dart b/lib/utilities/extensions.dart index 5205fba..de4e94a 100644 --- a/lib/utilities/extensions.dart +++ b/lib/utilities/extensions.dart @@ -154,7 +154,6 @@ extension LanguageEnumToString on LanguageEnum { } } -enum CallTypeEnum { vitalSign, doctor, procedure, vaccination, nebulization, none } extension XCallType on CallTypeEnum { Color getColorByCallType() { diff --git a/lib/view_models/queuing_view_model.dart b/lib/view_models/queuing_view_model.dart index 6804fae..665af4d 100644 --- a/lib/view_models/queuing_view_model.dart +++ b/lib/view_models/queuing_view_model.dart @@ -192,7 +192,8 @@ class QueuingViewModel extends ChangeNotifier { } Future testSpeech() async { - textToSpeechService.speechTextTest("Ticket Number ... ABC One Tow Three.. Please visit Doctor."); + + textToSpeechService.speechTextTest(MockJsonRepo.ticket); } Future callTicketOnScreen({required TicketData? ticketData}) async { diff --git a/lib/view_models/screen_config_view_model.dart b/lib/view_models/screen_config_view_model.dart index 8b5dd9c..7422fb7 100644 --- a/lib/view_models/screen_config_view_model.dart +++ b/lib/view_models/screen_config_view_model.dart @@ -274,6 +274,11 @@ class ScreenConfigViewModel extends ChangeNotifier { notifyListeners(); return; } + final namazTime = prayersWidgetModel.fajr!.toFormattedDateTimeFromInt(); + nextPrayerToShowWithTime = "${globalConfigurationsModel.fajarText} at $namazTime"; + notifyListeners(); + return; + } int counter = 0; @@ -308,13 +313,15 @@ class ScreenConfigViewModel extends ChangeNotifier { // At midnight, update weather and prayer details if required if (now.day != lastChecked.day) { - if (globalConfigurationsModel.isWeatherReq) { - await getWeatherDetailsFromServer(); - } - if (globalConfigurationsModel.isPrayerTimeReq) { - await getPrayerDetailsFromServer(); + if (now.difference(now.copyWith(hour: 0, minute: 0, second: 0, millisecond: 0, microsecond: 0)).inMinutes >= 5) { + if (globalConfigurationsModel.isWeatherReq) { + await getWeatherDetailsFromServer(); + } + if (globalConfigurationsModel.isPrayerTimeReq) { + await getPrayerDetailsFromServer(); + } + lastChecked = now; } - lastChecked = now; } getNextPrayerToShow(); diff --git a/pubspec.lock b/pubspec.lock index 7348769..8bd602b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.18.0" connectivity_plus: dependency: "direct main" description: @@ -268,18 +268,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.5" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.5" leak_tracker_testing: dependency: transitive description: @@ -564,7 +564,7 @@ packages: dependency: transitive description: flutter source: sdk - version: "0.0.0" + version: "0.0.99" source_span: dependency: transitive description: @@ -593,10 +593,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.11.1" stream_channel: dependency: transitive description: @@ -609,10 +609,10 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.2.0" synchronized: dependency: transitive description: @@ -633,10 +633,10 @@ packages: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.2" tuple: dependency: transitive description: @@ -697,10 +697,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "14.2.5" wakelock_plus: dependency: "direct main" description: