From 67e0cac7428cd36a677295cc6c566e18d30a1f02 Mon Sep 17 00:00:00 2001 From: mosazaid Date: Wed, 19 May 2021 17:46:00 +0300 Subject: [PATCH] add livecare to home --- lib/config/config.dart | 2 + lib/core/service/home/dasboard_service.dart | 21 +- lib/core/viewModel/dashboard_view_model.dart | 29 +- lib/screens/home/home_screen.dart | 267 ++++++++++-------- .../AddVerifyMedicalReport.dart | 187 +----------- .../medical_report/MedicalReportPage.dart | 51 ++-- pubspec.lock | 8 +- 7 files changed, 247 insertions(+), 318 deletions(-) diff --git a/lib/config/config.dart b/lib/config/config.dart index 0e8106bc..1760caef 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -295,6 +295,8 @@ const GET_PROCEDURE_TEMPLETE = const GET_PROCEDURE_TEMPLETE_DETAILS = "Services/Doctors.svc/REST/DAPP_ProcedureTemplateDetailsGet"; +const DOCTOR_CHECK_HAS_LIVE_CARE = "Services/DoctorApplication.svc/REST/CheckDoctorHasLiveCare"; + var selectedPatientType = 1; //*********change value to decode json from Dropdown ************ diff --git a/lib/core/service/home/dasboard_service.dart b/lib/core/service/home/dasboard_service.dart index 5a66e9eb..685646ee 100644 --- a/lib/core/service/home/dasboard_service.dart +++ b/lib/core/service/home/dasboard_service.dart @@ -6,7 +6,8 @@ class DashboardService extends BaseService { List _dashboardItemsList = []; List get dashboardItemsList => _dashboardItemsList; - // DashboardModel _dashboard = DashboardModel(); + bool hasVirtualClinic; + String sServiceID; Future getDashboard() async { hasError = false; @@ -28,4 +29,22 @@ class DashboardService extends BaseService { }, ); } + + Future checkDoctorHasLiveCare() async { + hasError = false; + await baseAppClient.post( + DOCTOR_CHECK_HAS_LIVE_CARE, + onSuccess: (dynamic response, int statusCode) { + hasVirtualClinic = response['HasVirtualClinic']; + sServiceID = response['SserviceID']; + }, + onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, + body: { + "DoctorID": 9920 + }, + ); + } } diff --git a/lib/core/viewModel/dashboard_view_model.dart b/lib/core/viewModel/dashboard_view_model.dart index a1f83293..bbbef0b6 100644 --- a/lib/core/viewModel/dashboard_view_model.dart +++ b/lib/core/viewModel/dashboard_view_model.dart @@ -12,14 +12,18 @@ import 'authentication_view_model.dart'; import 'base_view_model.dart'; class DashboardViewModel extends BaseViewModel { - final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); DashboardService _dashboardService = locator(); List get dashboardItemsList => _dashboardService.dashboardItemsList; - Future setFirebaseNotification(ProjectViewModel projectsProvider, AuthenticationViewModel authProvider) async{ + bool get hasVirtualClinic => _dashboardService.hasVirtualClinic; + + String get sServiceID => _dashboardService.sServiceID; + + Future setFirebaseNotification(ProjectViewModel projectsProvider, + AuthenticationViewModel authProvider) async { setState(ViewState.Busy); await projectsProvider.getDoctorClinicsList(); @@ -50,12 +54,27 @@ class DashboardViewModel extends BaseViewModel { setState(ViewState.Idle); } - Future changeClinic(int clinicId, AuthenticationViewModel authProvider) async { + Future checkDoctorHasLiveCare() async { + setState(ViewState.Busy); + await _dashboardService.checkDoctorHasLiveCare(); + if (_dashboardService.hasError) { + error = _dashboardService.error; + setState(ViewState.Error); + } else + setState(ViewState.Idle); + } + + Future changeClinic( + int clinicId, AuthenticationViewModel authProvider) async { setState(ViewState.BusyLocal); await getDoctorProfile(); - ClinicModel clinicModel = ClinicModel(doctorID:doctorProfile.doctorID,clinicID: clinicId, projectID: doctorProfile.projectID,); + ClinicModel clinicModel = ClinicModel( + doctorID: doctorProfile.doctorID, + clinicID: clinicId, + projectID: doctorProfile.projectID, + ); await authProvider.getDoctorProfileBasedOnClinic(clinicModel); - if(authProvider.state == ViewState.ErrorLocal) { + if (authProvider.state == ViewState.ErrorLocal) { error = authProvider.error; } } diff --git a/lib/screens/home/home_screen.dart b/lib/screens/home/home_screen.dart index 40277db9..f99dc727 100644 --- a/lib/screens/home/home_screen.dart +++ b/lib/screens/home/home_screen.dart @@ -33,7 +33,6 @@ import 'package:provider/provider.dart'; import 'package:sticky_headers/sticky_headers/widget.dart'; import '../../widgets/shared/app_texts_widget.dart'; -import 'home_page_card.dart'; class HomeScreen extends StatefulWidget { HomeScreen({Key key, this.title}) : super(key: key); @@ -55,6 +54,7 @@ class _HomeScreenState extends State { int sliderActiveIndex = 0; var clinicId; AuthenticationViewModel authenticationViewModel; + int colorIndex = 0; @override Widget build(BuildContext context) { @@ -68,9 +68,11 @@ class _HomeScreenState extends State { return BaseView( onModelReady: (model) async { - await model.setFirebaseNotification(projectsProvider, authenticationViewModel); + await model.setFirebaseNotification( + projectsProvider, authenticationViewModel); await model.getDashboard(); await model.getDoctorProfile(isGetProfile: true); + await model.checkDoctorHasLiveCare(); }, builder: (_, model, w) => AppScaffold( baseViewModel: model, @@ -289,117 +291,7 @@ class _HomeScreenState extends State { child: ListView( scrollDirection: Axis.horizontal, children: [ - HomePatientCard( - backgroundColor: Color(0xffD02127), - backgroundIconColor: Colors.white12, - cardIcon: DoctorApp.inpatient, - textColor: Colors.white, - text: "Live Care Patients", - onTap: () { - Navigator.push( - context, - FadePage( - page: PatientInPatientScreen(), - ), - ); - }, - ), - HomePatientCard( - backgroundColor: Color(0xffD02127), - backgroundIconColor: Colors.white12, - cardIcon: DoctorApp.inpatient, - textColor: Colors.white, - text: TranslationBase.of(context) - .myInPatient, - onTap: () { - Navigator.push( - context, - FadePage( - page: PatientInPatientScreen(), - ), - ); - }, - ), - HomePatientCard( - backgroundColor: Colors.grey[300], - backgroundIconColor: Colors.white38, - cardIcon: DoctorApp.arrival_patients, - textColor: Colors.black, - text: TranslationBase.of(context) - .myOutPatient_2lines, - onTap: () { - String date = - AppDateUtils.convertDateToFormat( - DateTime( - DateTime.now().year, - DateTime.now().month, - DateTime.now().day), - 'yyyy-MM-dd'); - - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => OutPatientsScreen( - patientSearchRequestModel: - PatientSearchRequestModel( - from: date, - to: date, - doctorID: - authenticationViewModel - .doctorProfile - .doctorID)), - )); - }, - ), - HomePatientCard( - backgroundColor: Color(0xff2B353E), - backgroundIconColor: Colors.white10, - cardIcon: DoctorApp.referral_1, - textColor: Colors.white, - text: TranslationBase.of(context) - .myPatientsReferral, - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - PatientReferralScreen(), - ), - ); - }, - ), - HomePatientCard( - backgroundColor: Color(0xffD02127), - backgroundIconColor: Colors.white10, - cardIcon: DoctorApp.search, - textColor: Colors.white, - text: TranslationBase.of(context) - .searchPatientDashBoard, - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - PatientSearchScreen(), - )); - }, - ), - HomePatientCard( - backgroundColor: Color(0xffC9C9C9), - backgroundIconColor: Colors.black12, - cardIcon: DoctorApp.search_medicines, - textColor: Color(0xff2B353E), - text: TranslationBase.of(context) - .searchMedicineDashboard, - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - MedicineSearchScreen(), - )); - }, - ), + ...homePatientsCardsWidget(model), ])), SizedBox( height: 20, @@ -416,4 +308,153 @@ class _HomeScreenState extends State { ), ); } + + List homePatientsCardsWidget(DashboardViewModel model) { + colorIndex = 0; + + List backgroundColors = List(3); + backgroundColors[0] = Color(0xffD02127); + backgroundColors[1] = Colors.grey[300]; + backgroundColors[2] = Color(0xff2B353E); + List backgroundIconColors = List(3); + backgroundIconColors[0] = Colors.white12; + backgroundIconColors[1] = Colors.white38; + backgroundIconColors[2] = Colors.white10; + List textColors = List(3); + textColors[0] = Colors.white; + textColors[1] = Colors.black; + textColors[2] = Colors.white; + + List patientCards = List(); + + if (model.hasVirtualClinic) { + patientCards.add(HomePatientCard( + backgroundColor: backgroundColors[colorIndex], + backgroundIconColor: backgroundIconColors[colorIndex], + cardIcon: DoctorApp.inpatient, + textColor: textColors[colorIndex], + text: + "${TranslationBase.of(context).liveCare}\n${TranslationBase.of(context).patients}", + onTap: () { + Navigator.push( + context, + FadePage( + page: PatientInPatientScreen(), + ), + ); + }, + )); + changeColorIndex(); + } + + patientCards.add(HomePatientCard( + backgroundColor: backgroundColors[colorIndex], + backgroundIconColor: backgroundIconColors[colorIndex], + cardIcon: DoctorApp.inpatient, + textColor: textColors[colorIndex], + text: TranslationBase.of(context).myInPatient, + onTap: () { + Navigator.push( + context, + FadePage( + page: PatientInPatientScreen(), + ), + ); + }, + )); + changeColorIndex(); + + patientCards.add(HomePatientCard( + backgroundColor: backgroundColors[colorIndex], + backgroundIconColor: backgroundIconColors[colorIndex], + cardIcon: DoctorApp.arrival_patients, + textColor: textColors[colorIndex], + text: TranslationBase.of(context).myOutPatient_2lines, + onTap: () { + String date = AppDateUtils.convertDateToFormat( + DateTime( + DateTime.now().year, DateTime.now().month, DateTime.now().day), + 'yyyy-MM-dd'); + + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => OutPatientsScreen( + patientSearchRequestModel: PatientSearchRequestModel( + from: date, + to: date, + doctorID: + authenticationViewModel.doctorProfile.doctorID)), + )); + }, + )); + changeColorIndex(); + + patientCards.add(HomePatientCard( + backgroundColor: backgroundColors[colorIndex], + backgroundIconColor: backgroundIconColors[colorIndex], + cardIcon: DoctorApp.referral_1, + textColor: textColors[colorIndex], + text: TranslationBase.of(context) + .myPatientsReferral, + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + PatientReferralScreen(), + ), + ); + }, + )); + changeColorIndex(); + + patientCards.add(HomePatientCard( + backgroundColor: backgroundColors[colorIndex], + backgroundIconColor: backgroundIconColors[colorIndex], + cardIcon: DoctorApp.search, + textColor: textColors[colorIndex], + text: TranslationBase.of(context) + .searchPatientDashBoard, + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + PatientSearchScreen(), + )); + }, + )); + changeColorIndex(); + + patientCards.add(HomePatientCard( + backgroundColor: backgroundColors[colorIndex], + backgroundIconColor: backgroundIconColors[colorIndex], + cardIcon: DoctorApp.search_medicines, + textColor: textColors[colorIndex], + text: TranslationBase.of(context) + .searchMedicineDashboard, + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + MedicineSearchScreen(), + )); + }, + )); + changeColorIndex(); + + return [ + ...List.generate(patientCards.length, (index) => patientCards[index]) + .toList() + ]; + } + + changeColorIndex() { + colorIndex++; + if (colorIndex > 2) { + colorIndex = 0; + } + } } diff --git a/lib/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart b/lib/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart index 4c51e3d7..a3fa91e9 100644 --- a/lib/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart +++ b/lib/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart @@ -1,6 +1,4 @@ -import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; -import 'package:doctor_app_flutter/core/provider/robot_provider.dart'; import 'package:doctor_app_flutter/core/viewModel/PatientMedicalReportViewModel.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/models/patient/MedicalReport/MeidcalReportModel.dart'; @@ -11,14 +9,11 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; -import 'package:doctor_app_flutter/widgets/shared/speech-text-popup.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/html_rich_editor.dart'; import 'package:flutter/material.dart'; import 'package:html_editor_enhanced/html_editor.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; -import 'package:speech_to_text/speech_recognition_error.dart'; -import 'package:speech_to_text/speech_to_text.dart' as stt; class AddVerifyMedicalReport extends StatefulWidget { @override @@ -26,42 +21,6 @@ class AddVerifyMedicalReport extends StatefulWidget { } class _AddVerifyMedicalReportState extends State { - stt.SpeechToText speechHistoryFinding = stt.SpeechToText(); - stt.SpeechToText speechLaboratoryData = stt.SpeechToText(); - stt.SpeechToText speechRecommendation = stt.SpeechToText(); - var recognizedWord1; - var recognizedWord2; - var recognizedWord3; - var event = RobotProvider(); - - TextEditingController historyFindingController = TextEditingController(); - TextEditingController laboratoryDataController = TextEditingController(); - TextEditingController recommendationController = TextEditingController(); - String commentsError; - String comments2Error; - String comments3Error; - - @override - void initState() { - requestPermissions(); - event.controller.stream.listen((p) { - if (p['startPopUp'] == 'true') { - if (this.mounted) { - initSpeechState().then((value) { - onVoiceText(); - }); - initSpeechState2().then((value) { - onVoiceText2(); - }); - initSpeechState3().then((value) { - onVoiceText3(); - }); - } - } - }); - super.initState(); - } - @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); @@ -94,9 +53,15 @@ class _AddVerifyMedicalReportState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - HtmlRichEditor(initialText: model - .medicalReportTemplate[0] - .templateTextHtml, height: MediaQuery.of(context).size.height * 0.75,), + if (model.medicalReportTemplate.length > 0) + HtmlRichEditor( + initialText: model + .medicalReportTemplate[0] + .templateTextHtml, + height: + MediaQuery.of(context).size.height * + 0.75, + ), ], ), ), @@ -121,13 +86,13 @@ class _AddVerifyMedicalReportState extends State { // disabled: progressNoteController.text.isEmpty, fontWeight: FontWeight.w700, onPressed: () async { - - String txtOfMedicalReport = await HtmlEditor.getText(); + String txtOfMedicalReport = + await HtmlEditor.getText(); if (txtOfMedicalReport.isNotEmpty) { GifLoaderDialogUtils.showMyDialog(context); - model.insertMedicalReport(patient,txtOfMedicalReport - ); + model.insertMedicalReport( + patient, txtOfMedicalReport); GifLoaderDialogUtils.hideDialog(context); if (model.state == ViewState.ErrorLocal) { DrAppToastMsg.showErrorToast(model.error); @@ -166,137 +131,11 @@ class _AddVerifyMedicalReportState extends State { )); } - onVoiceText() async { - new SpeechToText(context: context).showAlertDialog(context); - var lang = TranslationBase.of(AppGlobal.CONTEX).locale.languageCode; - bool available = await speechHistoryFinding.initialize( - onStatus: statusListener, onError: errorListener); - if (available) { - speechHistoryFinding.listen( - onResult: resultListener, - listenMode: stt.ListenMode.confirmation, - localeId: lang == 'en' ? 'en-US' : 'ar-SA', - ); - } else { - print("The user has denied the use of speech recognition."); - } - } - - onVoiceText2() async { - new SpeechToText(context: context).showAlertDialog(context); - var lang = TranslationBase.of(AppGlobal.CONTEX).locale.languageCode; - bool available = await speechLaboratoryData.initialize( - onStatus: statusListener, onError: errorListener); - if (available) { - speechLaboratoryData.listen( - onResult: resultListener2, - listenMode: stt.ListenMode.confirmation, - localeId: lang == 'en' ? 'en-US' : 'ar-SA', - ); - } else { - print("The user has denied the use of speech recognition."); - } - } - - onVoiceText3() async { - new SpeechToText(context: context).showAlertDialog(context); - var lang = TranslationBase.of(AppGlobal.CONTEX).locale.languageCode; - bool available = await speechRecommendation.initialize( - onStatus: statusListener, onError: errorListener); - if (available) { - speechRecommendation.listen( - onResult: resultListener3, - listenMode: stt.ListenMode.confirmation, - localeId: lang == 'en' ? 'en-US' : 'ar-SA', - ); - } else { - print("The user has denied the use of speech recognition."); - } - } - - void errorListener(SpeechRecognitionError error) { - event.setValue({"searchText": 'null'}); - //SpeechToText.closeAlertDialog(context); - print(error); - } - - void statusListener(String status) { - recognizedWord1 = status == 'listening' ? 'Lisening...' : 'Sorry....'; - recognizedWord2 = status == 'listening' ? 'Lisening...' : 'Sorry....'; - recognizedWord3 = status == 'listening' ? 'Lisening...' : 'Sorry....'; - } - void requestPermissions() async { Map statuses = await [ Permission.microphone, ].request(); } - - void resultListener(result) { - recognizedWord1 = result.recognizedWords; - event.setValue({"searchText": recognizedWord1}); - - if (result.finalResult == true) { - setState(() { - SpeechToText.closeAlertDialog(context); - speechHistoryFinding.stop(); - historyFindingController.text += recognizedWord1 + '\n'; - }); - } else { - print(result.finalResult); - } - } - - void resultListener2(result) { - recognizedWord2 = result.recognizedWords; - event.setValue({"searchText": recognizedWord2}); - - if (result.finalResult == true) { - setState(() { - SpeechToText.closeAlertDialog(context); - speechLaboratoryData.stop(); - laboratoryDataController.text += recognizedWord2 + '\n'; - }); - } else { - print(result.finalResult); - } - } - - void resultListener3(result) { - recognizedWord3 = result.recognizedWords; - event.setValue({"searchText": recognizedWord3}); - - if (result.finalResult == true) { - setState(() { - SpeechToText.closeAlertDialog(context); - speechRecommendation.stop(); - recommendationController.text += recognizedWord3 + '\n'; - }); - } else { - print(result.finalResult); - } - } - - Future initSpeechState() async { - bool hasSpeech = await speechHistoryFinding.initialize( - onError: errorListener, onStatus: statusListener); - print(hasSpeech); - if (!mounted) return; - } - - Future initSpeechState2() async { - bool hasSpeech = await speechLaboratoryData.initialize( - onError: errorListener, onStatus: statusListener); - print(hasSpeech); - if (!mounted) return; - } - - Future initSpeechState3() async { - bool hasSpeech = await speechRecommendation.initialize( - onError: errorListener, onStatus: statusListener); - print(hasSpeech); - if (!mounted) return; - } } enum MedicalReportStatus { ADD, VERIFY } diff --git a/lib/screens/patients/profile/medical_report/MedicalReportPage.dart b/lib/screens/patients/profile/medical_report/MedicalReportPage.dart index 4dad827c..5e71dbd6 100644 --- a/lib/screens/patients/profile/medical_report/MedicalReportPage.dart +++ b/lib/screens/patients/profile/medical_report/MedicalReportPage.dart @@ -6,6 +6,7 @@ import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/date-utils.dart'; +import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/add-order/addNewOrder.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart'; @@ -32,12 +33,16 @@ class MedicalReportPage extends StatelessWidget { ProjectViewModel projectViewModel = Provider.of(context); return BaseView( - onModelReady: (model) => model.getMedicalReportList(patient), + onModelReady: (model) async { + await model.getMedicalReportList(patient); + if (model.state == ViewState.ErrorLocal) { + DrAppToastMsg.showErrorToast(model.error); + } + }, builder: (_, model, w) => AppScaffold( baseViewModel: model, isShowAppBar: true, backgroundColor: Theme.of(context).scaffoldBackgroundColor, - appBar: PatientProfileHeaderNewDesignAppBar( patient, patientType, @@ -80,10 +85,10 @@ class MedicalReportPage extends StatelessWidget { }, label: TranslationBase.of(context).createNewMedicalReport, ), - if (model.state == ViewState.ErrorLocal) - Container( - child: ErrorMessage(error: model.error), - ), + // if (model.state == ViewState.ErrorLocal) + // Container( + // child: ErrorMessage(error: model.error), + // ), if (model.state != ViewState.ErrorLocal) ...List.generate( model.medicalReportList.length, @@ -150,22 +155,26 @@ class MedicalReportPage extends StatelessWidget { onTap: () { if (model.medicalReportList[index].status == 0) { - Navigator.of(context) - .pushNamed(PATIENT_MEDICAL_REPORT_INSERT, arguments: { - 'patient': patient, - 'patientType': patientType, - 'arrivalType': arrivalType, - 'type': MedicalReportStatus.ADD, - 'medicalReport' : model.medicalReportList[index] - }); + Navigator.of(context).pushNamed( + PATIENT_MEDICAL_REPORT_INSERT, + arguments: { + 'patient': patient, + 'patientType': patientType, + 'arrivalType': arrivalType, + 'type': MedicalReportStatus.ADD, + 'medicalReport': + model.medicalReportList[index] + }); } else { - Navigator.of(context) - .pushNamed(PATIENT_MEDICAL_REPORT_DETAIL, arguments: { - 'patient': patient, - 'patientType': patientType, - 'arrivalType': arrivalType, - 'medicalReport' : model.medicalReportList[index] - }); + Navigator.of(context).pushNamed( + PATIENT_MEDICAL_REPORT_DETAIL, + arguments: { + 'patient': patient, + 'patientType': patientType, + 'arrivalType': arrivalType, + 'medicalReport': + model.medicalReportList[index] + }); } }, child: Icon( diff --git a/pubspec.lock b/pubspec.lock index 613c2753..980a4154 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -587,7 +587,7 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.3-nullsafety.1" + version: "0.6.2" json_annotation: dependency: transitive description: @@ -629,7 +629,7 @@ packages: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.4" + version: "1.3.0-nullsafety.3" mime: dependency: transitive description: @@ -921,7 +921,7 @@ packages: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.10.0-nullsafety.2" + version: "1.10.0-nullsafety.1" sticky_headers: dependency: "direct main" description: @@ -1119,5 +1119,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.10.0 <=2.11.0-213.1.beta" + dart: ">=2.10.0 <2.11.0" flutter: ">=1.22.0 <2.0.0"