import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/medical_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/time_line_new_widget.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/radio_selection_dialog.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; class MedicalProfilePageNew extends StatefulWidget { Function()? onTap; String? a; MedicalProfilePageNew({this.onTap}); @override _MedicalProfilePageState createState() => _MedicalProfilePageState(); } class _MedicalProfilePageState extends State { var authProvider = new AuthProvider(); List medical = []; ProjectViewModel? projectViewModel; List projectsList = []; HospitalsModel? _selectedHospital; @override Widget build(BuildContext context) { projectViewModel = Provider.of(context); var appoCountProvider = Provider.of(context); List myMedicalList = Utils.myMedicalList(projectViewModel: projectViewModel!, context: context, count: appoCountProvider.count, isLogin: projectViewModel!.isLogin, onWeCareClick: openWeCareProjectSelection); return BaseView( onModelReady: (model) => model.getAppointmentHistory(isForTimeLine: true), builder: (_, model, widget1) => AppScaffold( isShowDecPage: false, isShowAppBar: false, baseViewModel: model, showNewAppBar: true, isHelp: true, showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).medicalFileTitle, onTap: widget.onTap, body: Container( child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ TimeLineView(model.isLogin, projectViewModel!.isArabic, model.appoitmentAllHistoryResultList, model), SizedBox( height: 20, ), Padding( padding: EdgeInsets.only(left: 12, right: 12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ projectViewModel!.isLogin ? Text( projectViewModel?.user.firstName ?? "", style: TextStyle(color: Colors.black, fontSize: SizeConfig.textMultiplier! * 1.8), ) : Container(), Text( TranslationBase.of(context).medicalFileTitle, style: TextStyle( color: Colors.black, fontSize: SizeConfig.textMultiplier! * 3, fontWeight: FontWeight.bold, ), ), ], ), ), SizedBox( height: 20, ), Padding( padding: EdgeInsets.only(left: 12, right: 12), child: GridView.builder( shrinkWrap: true, primary: false, physics: NeverScrollableScrollPhysics(), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 2 / 2, crossAxisSpacing: 12, mainAxisSpacing: 12), padding: EdgeInsets.zero, itemCount: myMedicalList.length, itemBuilder: (BuildContext context, int index) { return myMedicalList[index]; }, ), ), SizedBox( height: 12, ), ], ), ), ), ), ); } openWeCareProjectSelection() { int _selectedHospitalIndex = -1; int languageID = projectViewModel!.isArabic ? 1 : 2; GifLoaderDialogUtils.showMyDialog(context); ClinicListService service = new ClinicListService(); List projectsListLocal = []; service.getProjectsList(languageID, context).then((res) { if (res['MessageStatus'] == 1) { setState(() { res['ListProject'].forEach((v) { projectsListLocal.add(new HospitalsModel.fromJson(v)); }); projectsList = projectsListLocal; }); GifLoaderDialogUtils.hideDialog(context); List list = [ for (int i = 0; i < projectsList.length; i++) RadioSelectionDialogModel(projectsList[i].name! + ' ${projectsList[i].distanceInKilometers} ' + TranslationBase.of(context).km, i), ]; showDialog( context: context, builder: (cxt) => RadioSelectionDialog( buttonText: TranslationBase.of(context).confirm, listData: list, selectedIndex: _selectedHospitalIndex, isScrollable: true, onValueSelected: (index) { _selectedHospitalIndex = index; _selectedHospital = projectsList[index]; openWeCareURL(_selectedHospital!.iD); // setState(() {}); }, ), ); } }).catchError((err) { GifLoaderDialogUtils.hideDialog(context); }).catchError((err) { print(err); }); } openWeCareURL(int projectID) { GifLoaderDialogUtils.showMyDialog(context); ClinicListService service = new ClinicListService(); service.getWeCareURL(projectID).then((res) { print(res["Consent_VirtualJurny_Url_GetByProjectIDList"][0]["Url"]); Uri uri = Uri.parse(res["Consent_VirtualJurny_Url_GetByProjectIDList"][0]["Url"]); GifLoaderDialogUtils.hideDialog(context); launchUrl(uri, mode: LaunchMode.inAppWebView); }).catchError((err) { GifLoaderDialogUtils.hideDialog(context); print(err); AppToast.showErrorToast(message: err.toString()); }); } } class Medical { final String? title; final String? imagePath; final String? subTitle; final Widget? page; Medical({this.title, this.imagePath, this.subTitle, this.page}); }