import 'dart:async'; import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/service/VideoCallService.dart'; import 'package:doctor_app_flutter/core/viewModel/LiveCarePatientViewModel.dart'; 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/NotificationPermissionUtils.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/patient_card/PatientCard.dart'; import 'package:doctor_app_flutter/widgets/shared/app_loader_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/app_text_form_field.dart'; import 'package:flutter/material.dart'; import '../../locator.dart'; import '../../routes.dart'; class LiveCarePatientScreen extends StatefulWidget { @override _LiveCarePatientScreenState createState() => _LiveCarePatientScreenState(); } class _LiveCarePatientScreenState extends State { final _controller = TextEditingController(); Timer timer; LiveCarePatientViewModel _liveCareViewModel; @override void initState() { super.initState(); timer = Timer.periodic(Duration(seconds: 10), (Timer t) { if (_liveCareViewModel != null) { _liveCareViewModel.getPendingPatientERForDoctorApp(isFromTimer: true); } }); } @override void dispose() { _liveCareViewModel.isLogin(0); _liveCareViewModel = null; timer?.cancel(); super.dispose(); } @override Widget build(BuildContext context) { return BaseView( onModelReady: (model) async { _liveCareViewModel = model; await model.getPendingPatientERForDoctorApp(); await model.isLogin(1); }, builder: (_, model, w) => AppScaffold( baseViewModel: model, isShowAppBar: false, body: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5), decoration: BoxDecoration( color: Colors.white, ), child: Container( padding: EdgeInsets.only(left: 10, right: 10, bottom: 10), margin: EdgeInsets.only(top: 50), child: Row(children: [ IconButton( icon: Icon(Icons.arrow_back_ios), color: Colors.black, //Colors.black, onPressed: () => Navigator.pop(context), ), Expanded( child: AppText( "LiveCare Patients", fontSize: SizeConfig.textMultiplier * 2.8, fontWeight: FontWeight.bold, color: Color(0xFF2B353E), ), ), ]), ), ), SizedBox( height: 20, ), Center( child: FractionallySizedBox( widthFactor: .9, child: Container( width: double.maxFinite, height: 75, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(6.0)), border: Border.all( width: 1.0, color: Color(0xffCCCCCC), ), color: Colors.white), child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.only(left: 10, top: 10), child: AppText( TranslationBase.of(context).searchPatientName, fontSize: 13, )), AppTextFormField( // focusNode: focusProject, controller: _controller, borderColor: Colors.white, prefix: IconButton( icon: Icon( DoctorApp.filter_1, color: Colors.black, ), iconSize: 20, padding: EdgeInsets.only(bottom: 30), ), onChanged: (String str) { model.searchData(str); }), ])), ), ), model.state == ViewState.Idle ? Expanded( child: Container( child: model.filterData.isEmpty ? Center( child: ErrorMessage( error: TranslationBase.of(context).youDontHaveAnyPatient, ), ) : ListView.builder( scrollDirection: Axis.vertical, shrinkWrap: true, itemCount: model.filterData.length, itemBuilder: (BuildContext ctxt, int index) { return Padding( padding: EdgeInsets.all(8.0), child: PatientCard( patientInfo: PatiantInformtion.fromJson(model.filterData[index].toJson()), patientType: "0", arrivalType: "0", isFromSearch: false, isInpatient: false, isFromLiveCare: true, onTap: () { // TODO change the parameter to daynamic Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: { "patient": PatiantInformtion.fromJson(model.filterData[index].toJson()), "patientType": "0", "isSearch": false, "isInpatient": false, "arrivalType": "0", "isSearchAndOut": false, "isFromLiveCare": true, }); }, // isFromSearch: widget.isSearch, ), ); })), ) : Expanded( child: AppLoaderWidget( containerColor: Colors.transparent, )), // AppButton( // fontWeight: FontWeight.w700, // color:Colors.green[600], // title: TranslationBase.of(context).initiateCall, // disabled: model.state == ViewState.BusyLocal, // onPressed: () async { // AppPermissionsUtils.requestVideoCallPermission(context: context,onTapGrant: (){ // locator().openVideo(model.startCallRes, PatiantInformtion( // vcId: 454353, // fullName: "test mosa" // ), callConnected, callDisconnected); // }); // // }, // ), ], ), ), ); } callConnected() {} callDisconnected() {} }