You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RSGDoctorApp/lib/screens/live_care/live_care_patient_screen.dart

185 lines
7.5 KiB
Dart

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_field_custom_serach.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<LiveCarePatientScreen> {
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<LiveCarePatientViewModel>(
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,
),
AppTextFieldCustomSearch(
searchController: _controller,
onChangeFun: (value) {
model.searchData(value);
},
marginTop: 5,
suffixIcon: IconButton(
icon: Icon(
DoctorApp.filter_1,
color: Colors.black,
),
iconSize: 20,
),
),
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:AppGlobal.appGreenColor[600],
// title: TranslationBase.of(context).initiateCall,
// disabled: model.state == ViewState.BusyLocal,
// onPressed: () async {
// AppPermissionsUtils.requestVideoCallPermission(context: context,onTapGrant: (){
// locator<VideoCallService>().openVideo(model.startCallRes, PatiantInformtion(
// vcId: 454353,
// fullName: "test mosa"
// ), callConnected, callDisconnected);
// });
//
// },
// ),
],
),
),
);
}
callConnected() {}
callDisconnected() {}
}