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.
doctor_app_flutter/lib/screens/pharmaacy_intervention/PharmacyIntervention.dart

310 lines
9.4 KiB
Dart

import 'dart:ui';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/screens/patients/ReferralDischargedPatientPage.dart';
import 'package:doctor_app_flutter/screens/patients/patient_search/patient_search_header.dart';
import 'package:doctor_app_flutter/screens/patients/profile/referral/refer_details/referred-patient-screen.dart';
import 'package:doctor_app_flutter/utils/tab_utils.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.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:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:intl/intl.dart';
import '../../config/config.dart';
class PharmacyIntervention extends StatefulWidget {
@override
_PharmacyIntervention createState() => _PharmacyIntervention();
}
class _PharmacyIntervention extends State<PharmacyIntervention>
with SingleTickerProviderStateMixin {
TabController? _tabController;
int index = 0;
List<dynamic> listOfPharmacyIntervention = List.empty();
@override
void initState() {
super.initState();
_tabController = TabController(length: 3, vsync: this);
_tabController!.addListener(_handleTabSelection);
}
_handleTabSelection() {
setState(() {
index = _tabController!.index;
});
}
@override
void dispose() {
super.dispose();
_tabController!.dispose();
}
@override
Widget build(BuildContext context) {
ProjectViewModel projectsProvider = Provider.of<ProjectViewModel>(context);
return AppScaffold(
isShowAppBar: true,
appBar: PatientSearchHeader(
title: TranslationBase.of(context).pharmacyInterventionApproval,
fontSize: 18,
showSearchIcon: true,
onSearchPressed: () {
SearchDialog();
},
),
appBarTitle: TranslationBase.of(context).pharmacyInterventionApproval,
body: Column(
children: [
SizedBox(
height: 56,
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Expanded(
child: Container(
decoration: TabUtils.getBoxTabsBoxDecoration(
isActive: index == 0,
isFirst: true,
projectViewModel: projectsProvider),
child: Center(
child: TabUtils.getTabText(
title: TranslationBase.of(context).pending,
isActive: index == 0)),
),
),
Expanded(
child: Container(
decoration: TabUtils.getBoxTabsBoxDecoration(
isActive: index == 1,
isMiddle: true,
projectViewModel: projectsProvider),
child: Center(
child: TabUtils.getTabText(
title: TranslationBase.of(context).accepted,
isActive: index == 1)),
),
),
Expanded(
child: Container(
decoration: TabUtils.getBoxTabsBoxDecoration(
isActive: index == 2,
isLast: true,
projectViewModel: projectsProvider),
child: Center(
child: TabUtils.getTabText(
title: TranslationBase.of(context).rejected,
isActive: index == 2),
),
),
),
],
),
),
Expanded(
child: ListView.builder(
itemCount: listOfPharmacyIntervention.length,
itemBuilder: (context, item) => SizedBox.shrink()),
)
],
));
}
void SearchDialog() {
showDialog(
context: context,
barrierDismissible: true, // user must tap button!
builder: (_) {
return PharmacyInterventionDialog(
onDispose: (dateFrom, dateTo, admissionNumber, patientId) {});
});
}
}
class PharmacyInterventionDialog extends StatefulWidget {
final Function(
String,
String,
String,
String,
) onDispose;
const PharmacyInterventionDialog({super.key, required this.onDispose});
@override
State<PharmacyInterventionDialog> createState() =>
_PharmacyInterventionDialogState();
}
class _PharmacyInterventionDialogState
extends State<PharmacyInterventionDialog> {
final TextEditingController admissionNumber = TextEditingController();
final TextEditingController patientId = TextEditingController();
String dateFrom = '';
String dateTo = '';
@override
void initState() {
super.initState();
initFromDate();
}
@override
Widget build(BuildContext context) {
return Dialog(
backgroundColor: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
child: Padding(
padding: const EdgeInsets.all(24),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
_titleAndTextField(
TranslationBase.of(context).admissionNumber, admissionNumber),
SizedBox(height: 4,),
_titleAndTextField(
TranslationBase.of(context).patientID, patientId),
SizedBox(height: 4,),
_dateSelection(TranslationBase.of(context).dateFrom, (date) {
setState(() {
dateFrom = date;
});
}, dateFrom),
SizedBox(height: 4,),
_dateSelection(TranslationBase.of(context).dateTo, (date) {
setState(() {
dateTo = date;
});
}, dateTo),
SizedBox(height: 8,),
Row(children: [
Expanded(
child: AppButton(
title: TranslationBase.of(context).search,
hasBorder: true,
borderColor: Color(0xFFB8382B),
color: AppGlobal.appRedColor,
fontColor: Colors.white,
onPressed: () async {},
),
),
]),
],
),
),
);
}
Widget _dateSelection(
String title, Function(String) onDateSelected, String selectedDate) {
return GestureDetector(
onTap: ()=> _selectDate(onDateSelected),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(title),
Expanded(
child: ListTile(
title: Text(
selectedDate,
),
trailing: Icon(Icons.arrow_drop_down_outlined),
),
)
],
),
);
}
Future _selectDate(Function(String) updateDate) async {
// if (calenderType == CalenderType.Hijri) {
// JDateModel hijriDate = JDateModel(dateTime: DateTime.now());
// final JPickerValue? pickedH = await showGlobalDatePicker(
// context: context,
// pickerType: PickerType.JHijri,
// startDate: birthDateInHijri ?? hijriDate,
// endDate: JDateModel(
// jhijri: JHijri(fDate: hijriDate.dateTime),
// ),
//
// // firstDate: new HijriCalendar()
// // ..hYear = 1438
// // ..hMonth = 12
// // ..hDay = 25,
// pickerMode: DatePickerMode.day,
// );
// if (pickedH != null && birthDateInHijri != pickedH) updateDate(pickedH);
// } else {
final DateTime? picked = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(DateTime.now().year - 150),
lastDate: DateTime(DateTime.now().year + 150),
initialEntryMode: DatePickerEntryMode.calendar,
builder: (_, child) {
return Theme(
data: ThemeData.light().copyWith(
colorScheme: ColorScheme.fromSwatch(
primarySwatch: Colors.red,
accentColor: AppGlobal.appRedColor,
),
dialogBackgroundColor: Colors.white,
),
child: child!,
);
}
);
if (picked != null) {
updateDate(getFormattedDate(picked));
}
// }
}
Widget _titleAndTextField(String title, TextEditingController controller) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.min,
children: [
Text(title),
Expanded(
child: TextFormField(
decoration: InputDecoration(
hintText: '',
focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none,
contentPadding: EdgeInsetsDirectional.only(start: 10.0),
),
textAlign: TextAlign.end,
controller: controller,
),
)
],
);
}
void initFromDate() {
var time = DateTime.now();
dateFrom = getFormattedDate(time);
}
String getFormattedDate(DateTime time){
return DateFormat('MM/dd/yyyy').format(time);
}
}