From 8e85bb239e95912992b40e343d6606ca454c91e8 Mon Sep 17 00:00:00 2001 From: Elham Rababh Date: Sun, 7 Nov 2021 17:30:02 +0200 Subject: [PATCH] first step from hijri Calender --- lib/core/enum/CalenderType.dart | 4 + .../RegisterSearchPatientPage.dart | 80 ++++++++++++++++--- pubspec.lock | 13 ++- pubspec.yaml | 1 + 4 files changed, 86 insertions(+), 12 deletions(-) create mode 100644 lib/core/enum/CalenderType.dart diff --git a/lib/core/enum/CalenderType.dart b/lib/core/enum/CalenderType.dart new file mode 100644 index 00000000..51f98512 --- /dev/null +++ b/lib/core/enum/CalenderType.dart @@ -0,0 +1,4 @@ +enum CalenderType{ + Gregorian, + Hijri, +} \ No newline at end of file diff --git a/lib/screens/patients/register_patient/RegisterSearchPatientPage.dart b/lib/screens/patients/register_patient/RegisterSearchPatientPage.dart index ee8caa90..4b7f59be 100644 --- a/lib/screens/patients/register_patient/RegisterSearchPatientPage.dart +++ b/lib/screens/patients/register_patient/RegisterSearchPatientPage.dart @@ -19,6 +19,10 @@ import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart'; import 'package:flutter/material.dart'; +import 'package:hijri/hijri_calendar.dart'; +import 'package:hijri_picker/hijri_picker.dart'; +import 'package:doctor_app_flutter/core/enum/CalenderType.dart'; + class RegisterSearchPatientPage extends StatefulWidget { final Function changePageViewIndex; @@ -49,6 +53,10 @@ class _RegisterSearchPatientPageState extends State { DateTime _birthDate; String birthdateError; + var selectedHijriDate = new HijriCalendar.now(); + CalenderType calenderType = CalenderType.Gregorian; + + @override Widget build(BuildContext context) { @@ -157,6 +165,37 @@ class _RegisterSearchPatientPageState extends State { SizedBox( height: 10, ), + Row( + children: [ + Expanded( + child: RadioListTile( + title: AppText("Gregorian"), + value: CalenderType.Gregorian, + groupValue: calenderType, + onChanged: (CalenderType value) { + setState(() { + calenderType = value; + }); + }, + ), + ), + Expanded( + child: RadioListTile( + title: AppText("Hijri"), + value: CalenderType.Hijri, + groupValue: calenderType, + onChanged: (CalenderType value) { + setState(() { + calenderType = value; + }); + }, + ), + ), + ], + ), + SizedBox( + height: 10, + ), AppTextFieldCustom( height: screenSize.height * 0.075, hintText: "Birthdate", @@ -300,16 +339,39 @@ class _RegisterSearchPatientPageState extends State { } Future _selectDate(BuildContext context, DateTime dateTime, Function(DateTime picked) updateDate) async { - final DateTime picked = await showDatePicker( - context: context, - initialDate: dateTime, - firstDate: DateTime(DateTime.now().year - 150), - lastDate: DateTime(DateTime.now().year + 150), - initialEntryMode: DatePickerEntryMode.calendar, - ); - if (picked != null && picked != dateTime) { - updateDate(picked); + if(calenderType == CalenderType.Hijri) { + final HijriCalendar picked = await showHijriDatePicker( + context: context, + initialDate: selectedHijriDate, + + lastDate: new HijriCalendar() + ..hYear = 1445 + ..hMonth = 9 + ..hDay = 25, + firstDate: new HijriCalendar() + ..hYear = 1438 + ..hMonth = 12 + ..hDay = 25, + initialDatePickerMode: DatePickerMode.day, + ); + if (picked != null && selectedHijriDate != picked) + setState(() { + selectedHijriDate = picked; + }); + } else { + final DateTime picked = await showDatePicker( + context: context, + initialDate: dateTime, + firstDate: DateTime(DateTime.now().year - 150), + lastDate: DateTime(DateTime.now().year + 150), + initialEntryMode: DatePickerEntryMode.calendar, + ); + if (picked != null && picked != dateTime) { + updateDate(picked); + } } + + } void openListDialogField(String attributeName, String attributeValueId, diff --git a/pubspec.lock b/pubspec.lock index 3080216d..2c6e7702 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -581,6 +581,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.3" + hijri_picker: + dependency: "direct main" + description: + name: hijri_picker + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" html: dependency: "direct main" description: @@ -699,7 +706,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: @@ -1033,7 +1040,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: @@ -1238,5 +1245,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.10.2 <=2.11.0-213.1.beta" + dart: ">=2.10.2 <2.11.0" flutter: ">=1.22.2 <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 485e8ae6..341e5ee9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -105,6 +105,7 @@ dependencies: # Hijri hijri: ^2.0.0 + hijri_picker: ^2.0.0