Merge branch 'flutter_2_developemt' of https://gitlab.com/Cloud_Solution/doctor_app_flutter into flutter_2_developemt

merge-requests/888/merge
hussam al-habibeh 5 years ago
commit c9a95188ce

@ -72,7 +72,7 @@ class ProcedureService extends BaseService {
templateList.clear();
response['DAPP_TemplateGetList'].forEach((template) {
ProcedureTempleteDetailsModel templateElement = ProcedureTempleteDetailsModel.fromJson(template);
if (categoryID != null) {
if (categoryID != null ) {
if (categoryID == templateElement.categoryID) {
templateList.add(templateElement);
}
@ -80,9 +80,6 @@ class ProcedureService extends BaseService {
templateList.add(templateElement);
}
});
// response['HIS_ProcedureTemplateList'].forEach((template) {
// _templateList.add(ProcedureTempleteModel.fromJson(template));
// });
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;

@ -48,7 +48,7 @@ class PatientMedicalReportViewModel extends BaseViewModel {
}
Future insertMedicalReport(PatiantInformtion patient, String htmlText) async {
setState(ViewState.Busy);
setState(ViewState.BusyLocal);
await _service.insertMedicalReport(patient, htmlText);
if (_service.hasError) {
error = _service.error!;

@ -19,6 +19,8 @@ class PatientProfileAppBarModel {
String? clinic;
bool? isAppointmentHeader;
bool? isFromLabResult;
Stream <String> ?videoCallDurationStream;
PatientProfileAppBarModel(
{this.height = 0.0,
@ -38,7 +40,7 @@ class PatientProfileAppBarModel {
this.visitDate,
this.clinic,
this.isAppointmentHeader = false,
this.isFromLabResult =false});
this.isFromLabResult =false, this.videoCallDurationStream});
PatientProfileAppBarModel.fromJson(Map<String, dynamic> json) {
height = json['height'];
@ -59,6 +61,8 @@ class PatientProfileAppBarModel {
clinic = json['clinic'];
isAppointmentHeader = json['isAppointmentHeader'];
isFromLabResult = json['isFromLabResult'];
videoCallDurationStream = json['videoCallDurationStream'];
}
Map<String, dynamic> toJson() {
@ -81,6 +85,7 @@ class PatientProfileAppBarModel {
data['clinic'] = this.clinic;
data['isAppointmentHeader'] = this.isAppointmentHeader;
data['isFromLabResult'] = this.isFromLabResult;
data['videoCallDurationStream'] = this.videoCallDurationStream;
return data;
}
}

@ -52,7 +52,6 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
return AppScaffold(
isShowAppBar: false,
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
// baseViewModel: model,
body: SingleChildScrollView(
child: Center(
child: FractionallySizedBox(

@ -1,12 +1,10 @@
import 'dart:async';
import 'package:doctor_app_flutter/config/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/core/viewModel/SOAP_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/PostEpisodeReqModel.dart';
import 'package:doctor_app_flutter/models/livecare/session_status_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/profile/patient_profile_app_bar_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
@ -15,12 +13,9 @@ import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profi
import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_other.dart';
import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_search.dart';
import 'package:doctor_app_flutter/util/NotificationPermissionUtils.dart';
import 'package:doctor_app_flutter/util/VideoChannel.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-app-bar.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.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:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
@ -134,16 +129,20 @@ class _PatientProfileScreenState extends State<PatientProfileScreen> with Single
children: [
Column(
children: [
PatientProfileHeaderNewDesignAppBar(patient, arrivalType, patientType,
videoCallDurationStream: videoCallDurationStream,
isInpatient: isInpatient,
isFromLiveCare: isFromLiveCare,
height: (patient.patientStatusType != null && patient.patientStatusType == 43)
? 210
: isDischargedPatient
? 240
: 0,
isDischargedPatient: isDischargedPatient),
PatientProfileAppBar(
patientProfileAppBarModel: PatientProfileAppBarModel(
patient: patient,
videoCallDurationStream: videoCallDurationStream,
isInpatient: isInpatient,
isFromLiveCare: isFromLiveCare,
height: (patient.patientStatusType != null &&
patient.patientStatusType == 43)
? 210
: isDischargedPatient
? 240
: 0,
isDischargedPatient: isDischargedPatient),
),
Container(
height: !isSearchAndOut
? isDischargedPatient

@ -8,6 +8,7 @@ import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
import 'package:flutter/material.dart';
import 'package:flutter_html/shims/dart_ui.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
@ -18,7 +19,7 @@ class AddExaminationWidget extends StatefulWidget {
final Function(MySelectedExamination) addHistory;
final bool Function(MasterKeyModel) isServiceSelected;
bool isExpand;
final Function expandClick;
final VoidCallback expandClick;
AddExaminationWidget({
required this.item,
@ -89,7 +90,7 @@ class _AddExaminationWidgetState extends State<AddExaminationWidget> {
Container(
margin: EdgeInsets.symmetric(horizontal: 8),
child: InkWell(
onTap: widget.expandClick(),
onTap: widget.expandClick,
child: Icon(widget.isExpand ? Icons.keyboard_arrow_up : Icons.keyboard_arrow_down)),
),
],

@ -8,7 +8,7 @@ import 'package:provider/provider.dart';
class ExaminationItemCard extends StatelessWidget {
final MySelectedExamination examination;
final Function removeExamination;
final VoidCallback removeExamination;
ExaminationItemCard(this.examination, this.removeExamination);
@ -49,7 +49,7 @@ class ExaminationItemCard extends StatelessWidget {
fontSize: SizeConfig.textMultiplier * 1.8,
),
InkWell(
onTap: removeExamination(),
onTap: removeExamination,
child: Icon(
Icons.clear,
size: 20,

@ -276,21 +276,6 @@ class _UpdateObjectivePageState extends State<UpdateObjectivePage> {
removeExamination: (masterKey) => removeExamination(masterKey)),
),
);
/*showModalBottomSheet(
backgroundColor: Colors.white,
isScrollControlled: true,
context: context,
builder: (context) {
return AddExaminationDailog(
mySelectedExamination: widget.mySelectedExamination,
addSelectedExamination: () {
setState(() {
Navigator.of(context).pop();
});
},
removeExamination: (masterKey) => removeExamination(masterKey),
);
});*/
}
}

@ -3,14 +3,14 @@ import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
class SOAPOpenItems extends StatelessWidget {
final Function onTap;
final VoidCallback onTap;
final String label;
const SOAPOpenItems({Key? key, required this.onTap, required this.label}) : super(key: key);
@override
Widget build(BuildContext context) {
return InkWell(
onTap: onTap(),
onTap: onTap,
child: Container(
padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8.0),
margin: EdgeInsets.symmetric(vertical: 8),

@ -8,7 +8,7 @@ import 'package:hexcolor/hexcolor.dart';
class ExpandableSOAPWidget extends StatelessWidget {
final bool isExpanded;
final Widget child;
final Function onTap;
final VoidCallback onTap;
final headerTitle;
final bool isRequired;
@ -16,7 +16,7 @@ class ExpandableSOAPWidget extends StatelessWidget {
{Key? key,
required this.isExpanded,
required this.child,
required this.onTap,
required this.onTap,
this.headerTitle,
this.isRequired = true})
: super(key: key);
@ -34,12 +34,12 @@ class ExpandableSOAPWidget extends StatelessWidget {
),
child: HeaderBodyExpandableNotifier(
headerWidget: InkWell(
onTap: onTap(),
onTap: onTap,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
InkWell(
onTap: onTap(),
onTap: onTap,
child: Row(
children: [
AppText(headerTitle, variant: isExpanded ? "bodyText" : '', fontSize: 15, color: Colors.black),
@ -52,7 +52,7 @@ class ExpandableSOAPWidget extends StatelessWidget {
),
),
InkWell(
onTap: onTap(),
onTap: onTap,
child: Icon(isExpanded ? EvaIcons.arrowIosUpwardOutline : EvaIcons.arrowIosDownwardOutline),
)
],

@ -41,7 +41,7 @@ class _AddMedicationState extends State<AddMedication> {
TextEditingController strengthController = TextEditingController();
TextEditingController routeController = TextEditingController();
TextEditingController frequencyController = TextEditingController();
late GetMedicationResponseModel _selectedMedication;
GetMedicationResponseModel? _selectedMedication;
GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<GetMedicationResponseModel>>();
bool isFormSubmitted = false;
@ -127,8 +127,8 @@ class _AddMedicationState extends State<AddMedication> {
)
: AppTextFieldCustom(
hintText: _selectedMedication != null
? _selectedMedication.description! +
(' (${_selectedMedication.genericName} )')
? _selectedMedication!.description! +
(' (${_selectedMedication!.genericName} )')
: TranslationBase.of(context).searchMedicineNameHere,
minLines: 2,
maxLines: 2,
@ -346,7 +346,7 @@ class _AddMedicationState extends State<AddMedication> {
_selectedMedicationRoute != null &&
_selectedMedicationFrequency != null) {
widget.medicationController.text = widget.medicationController.text +
'${_selectedMedication.description} (${TranslationBase.of(context).doseTime} ) ${doseController.text} (${TranslationBase.of(context).strength}) ${strengthController.text} (${TranslationBase.of(context).route}) ${routeController.text} (${TranslationBase.of(context).frequency}) ${frequencyController.text} \n \n';
'${_selectedMedication!.description} (${TranslationBase.of(context).doseTime} ) ${doseController.text} (${TranslationBase.of(context).strength}) ${strengthController.text} (${TranslationBase.of(context).route}) ${routeController.text} (${TranslationBase.of(context).frequency}) ${frequencyController.text} \n \n';
Navigator.of(context).pop();
}
},

@ -58,10 +58,10 @@ extension procedureType on ProcedureType {
}
}
String getCategoryId() {
String ? getCategoryId() {
switch (this) {
case ProcedureType.PROCEDURE:
return '';
return null;
case ProcedureType.LAB_RESULT:
return "02";
case ProcedureType.RADIOLOGY:
@ -69,7 +69,7 @@ extension procedureType on ProcedureType {
case ProcedureType.PRESCRIPTION:
return "55";
default:
return '';
return null;
}
}

@ -38,14 +38,14 @@ class _VerificationMethodsListState extends State<VerificationMethodsList> {
return MethodTypeCard(
assetPath: 'assets/images/verify-whtsapp.png',
onTap: () => {widget.authenticateUser!(AuthMethodTypes.WhatsApp, true)},
label: TranslationBase.of(context).verifyWith ?? "" +"\n"+ TranslationBase.of(context).verifyWhatsApp!,
label: TranslationBase.of(context).verifyWith! + "\n"+ TranslationBase.of(context).verifyWhatsApp!,
);
break;
case AuthMethodTypes.SMS:
return MethodTypeCard(
assetPath: "assets/images/verify-sms.png",
onTap: () => {widget.authenticateUser!(AuthMethodTypes.SMS, true)},
label: TranslationBase.of(context).verifyWith ?? "" + "\n"+ TranslationBase.of(context).verifySMS!,
label: TranslationBase.of(context).verifyWith! + "\n"+ TranslationBase.of(context).verifySMS!,
);
break;
case AuthMethodTypes.Fingerprint:
@ -56,7 +56,7 @@ class _VerificationMethodsListState extends State<VerificationMethodsList> {
widget.authenticateUser!(AuthMethodTypes.Fingerprint, true);
}
},
label: TranslationBase.of(context).verifyWith ?? "" + "\n"+TranslationBase.of(context).verifyFingerprint!,
label: TranslationBase.of(context).verifyWith! + "\n"+TranslationBase.of(context).verifyFingerprint!,
);
break;
case AuthMethodTypes.FaceID:
@ -67,7 +67,7 @@ class _VerificationMethodsListState extends State<VerificationMethodsList> {
widget.authenticateUser!(AuthMethodTypes.FaceID, true);
}
},
label: TranslationBase.of(context).verifyWith ?? "" + "\n"+TranslationBase.of(context).verifyFaceID!,
label: TranslationBase.of(context).verifyWith! + "\n"+TranslationBase.of(context).verifyFaceID!,
);
break;

@ -90,6 +90,24 @@ class PatientProfileAppBar extends StatelessWidget with PreferredSizeWidget {
),
),
),
if(patientProfileAppBarModel.videoCallDurationStream != null)
StreamBuilder(
stream: patientProfileAppBarModel.videoCallDurationStream,
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if(snapshot.hasData && snapshot.data != null)
return InkWell(
onTap: (){
},
child: Container(
decoration: BoxDecoration(color: Colors.red, borderRadius: BorderRadius.circular(20)),
padding: EdgeInsets.symmetric(vertical: 2, horizontal: 10),
child: Text(snapshot.data!, style: TextStyle(color: Colors.white),),
),
);
else
return Container();
},
),
]),
),
Row(children: [
@ -497,12 +515,12 @@ class PatientProfileAppBar extends StatelessWidget with PreferredSizeWidget {
? 270
: ((patientProfileAppBarModel.patient!.appointmentDate!.isNotEmpty)
? patientProfileAppBarModel.isFromLabResult!
? 170
: 150
? 190
: 170
: patientProfileAppBarModel.patient!.admissionDate != null
? patientProfileAppBarModel.isFromLabResult!
? 170
: 150
? 190
: 170
: patientProfileAppBarModel.isDischargedPatient!
? 240
: 130)

@ -1,365 +0,0 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.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/util/date-utils.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:intl/intl.dart';
import 'package:url_launcher/url_launcher.dart';
class PatientProfileHeaderNewDesignAppBar extends StatelessWidget with PreferredSizeWidget {
final PatiantInformtion patient;
final String patientType;
final String arrivalType;
final double height;
final bool isInpatient;
final bool isDischargedPatient;
final bool isFromLiveCare;
final Stream <String> videoCallDurationStream;
PatientProfileHeaderNewDesignAppBar(this.patient, this.patientType, this.arrivalType,
{this.height = 0.0, this.isInpatient = false, this.isDischargedPatient = false, this.isFromLiveCare = false, required this.videoCallDurationStream});
@override
Widget build(BuildContext context) {
int gender = 1;
if (patient.patientDetails != null) {
gender = patient.patientDetails!.gender!;
} else {
gender = patient.gender!;
}
return Container(
padding: EdgeInsets.only(
left: 0,
right: 5,
bottom: 5,
),
decoration: BoxDecoration(
color: Colors.white,
),
height: height == 0
? isInpatient
? 215
: 200
: height,
child: Container(
padding: EdgeInsets.only(left: 10, right: 10, bottom: 10),
margin: EdgeInsets.only(top: 50),
child: Column(
children: [
Container(
padding: EdgeInsets.only(left: 12.0),
child: Row(children: [
IconButton(
icon: Icon(Icons.arrow_back_ios),
color: Colors.black, //Colors.black,
onPressed: () => Navigator.pop(context),
),
Expanded(
child: AppText(
patient.firstName != null
? (Helpers.capitalize(patient.firstName) + " " + Helpers.capitalize(patient.lastName))
: Helpers.capitalize(patient.fullName ?? patient.patientDetails!.fullName),
fontSize: SizeConfig.textMultiplier * 1.8,
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
),
),
gender == 1
? Icon(
DoctorApp.male_2,
color: Colors.blue,
)
: Icon(
DoctorApp.female_1,
color: Colors.pink,
),
Container(
margin: EdgeInsets.symmetric(horizontal: 4),
child: InkWell(
onTap: () {
launch("tel://" + patient.mobileNumber!);
},
child: Icon(
Icons.phone,
color: Colors.black87,
),
),
),
StreamBuilder(
stream: videoCallDurationStream,
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if(snapshot.hasData && snapshot.data != null)
return InkWell(
onTap: (){
},
child: Container(
decoration: BoxDecoration(color: Colors.red, borderRadius: BorderRadius.circular(20)),
padding: EdgeInsets.symmetric(vertical: 2, horizontal: 10),
child: Text(snapshot.data!, style: TextStyle(color: Colors.white),),
),
);
else
return Container();
},
),
]),
),
Row(children: [
Padding(
padding: EdgeInsets.only(left: 12.0),
child: Container(
width: 60,
height: 60,
child: Image.asset(
gender == 1 ? 'assets/images/male_avatar.png' : 'assets/images/female_avatar.png',
fit: BoxFit.cover,
),
),
),
SizedBox(
width: 10,
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SERVICES_PATIANT2[int.parse(patientType)] == "patientArrivalList"
? Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
patient.patientStatusType == 43
? AppText(
TranslationBase.of(context).arrivedP,
color: Colors.green,
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 12,
)
: AppText(
TranslationBase.of(context).notArrived,
color: Colors.red[800],
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 12,
),
arrivalType == '1' || patient.arrivedOn == null
? AppText(
patient.startTime != null ? patient.startTime : '',
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
)
: AppText(
patient.arrivedOn != null
? AppDateUtils.convertStringToDateFormat(
patient.arrivedOn ?? "", 'MM-dd-yyyy HH:mm')
: '',
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
)
],
))
: SizedBox(),
if (SERVICES_PATIANT2[int.parse(patientType)] == "List_MyOutPatient" && !isFromLiveCare)
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
AppText(
TranslationBase.of(context).appointmentDate! + " : ",
fontSize: 14,
),
patient.startTime != null
? Container(
height: 15,
width: 60,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(25),
color: HexColor("#20A169"),
),
child: AppText(
patient.startTime ?? "",
color: Colors.white,
fontSize: 1.5 * SizeConfig.textMultiplier,
textAlign: TextAlign.center,
fontWeight: FontWeight.bold,
),
)
: SizedBox(),
SizedBox(
width: 3.5,
),
Container(
child: AppText(
convertDateFormat2(patient.appointmentDate ?? ''),
fontSize: 1.5 * SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
),
SizedBox(
height: 0.5,
)
],
),
margin: EdgeInsets.only(
top: 8,
),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
RichText(
text: TextSpan(
style: TextStyle(fontSize: 1.6 * SizeConfig.textMultiplier, color: Colors.black),
children: <TextSpan>[
new TextSpan(
text: TranslationBase.of(context).fileNumber,
style: TextStyle(fontSize: 12, fontFamily: 'Poppins')),
new TextSpan(
text: patient.patientId.toString(),
style: TextStyle(fontWeight: FontWeight.w700, fontFamily: 'Poppins', fontSize: 14)),
],
),
),
Row(
children: [
AppText(
patient.nationalityName ?? patient.nationality ?? patient.nationalityId ?? '',
fontWeight: FontWeight.bold,
fontSize: 12,
),
patient.nationalityFlagURL != null
? ClipRRect(
borderRadius: BorderRadius.circular(20.0),
child: Image.network(
patient.nationalityFlagURL ?? "",
height: 25,
width: 30,
errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) {
return Text('No Image');
},
))
: SizedBox()
],
)
],
),
Container(
child: RichText(
text: new TextSpan(
style: new TextStyle(
fontSize: 1.6 * SizeConfig.textMultiplier,
color: Colors.black,
fontFamily: 'Poppins',
),
children: <TextSpan>[
new TextSpan(
text: TranslationBase.of(context).age! + " : ", style: TextStyle(fontSize: 14)),
new TextSpan(
text:
"${AppDateUtils.getAgeByBirthday(patient.patientDetails != null ? patient.patientDetails!.dateofBirth ?? "" : patient.dateofBirth ?? "", context, isServerFormat: !isFromLiveCare)}",
style: TextStyle(fontWeight: FontWeight.w700, fontSize: 14)),
],
),
),
),
if (isInpatient)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
child: RichText(
text: new TextSpan(
style: new TextStyle(
fontSize: 2.0 * SizeConfig.textMultiplier,
color: Colors.black,
fontFamily: 'Poppins',
),
children: <TextSpan>[
new TextSpan(
text: patient.admissionDate == null
? ""
: TranslationBase.of(context).admissionDate! + " : ",
style: TextStyle(fontSize: 14)),
new TextSpan(
text: patient.admissionDate == null
? ""
: "${AppDateUtils.convertDateFromServerFormat(patient.admissionDate.toString(), 'yyyy-MM-dd')}",
style: TextStyle(fontWeight: FontWeight.w700, fontSize: 15)),
]))),
if (patient.admissionDate != null)
Row(
children: [
AppText(
"${TranslationBase.of(context).numOfDays}: ",
fontSize: 15,
),
if (isDischargedPatient && patient.dischargeDate != null)
AppText(
"${AppDateUtils.getDateTimeFromServerFormat(patient.dischargeDate ?? "").difference(AppDateUtils.getDateTimeFromServerFormat(patient.admissionDate ?? "")).inDays + 1}",
fontSize: 15,
fontWeight: FontWeight.w700)
else
AppText(
"${DateTime.now().difference(AppDateUtils.getDateTimeFromServerFormat(patient.admissionDate ?? "")).inDays + 1}",
fontSize: 15,
fontWeight: FontWeight.w700),
],
),
],
)
],
),
),
]),
],
),
),
);
}
convertDateFormat2(String str) {
String? newDate;
const start = "/Date(";
if (str.isNotEmpty) {
const end = "+0300)";
final startIndex = str.indexOf(start);
final endIndex = str.indexOf(end, startIndex + start.length);
var date = new DateTime.fromMillisecondsSinceEpoch(int.parse(str.substring(startIndex + start.length, endIndex)));
newDate = date.year.toString() +
"/" +
date.month.toString().padLeft(2, '0') +
"/" +
date.day.toString().padLeft(2, '0');
}
return newDate ?? '';
}
isToday(date) {
DateTime tempDate = new DateFormat("yyyy-MM-dd").parse(date);
return DateFormat("yyyy-MM-dd").format(tempDate) == DateFormat("yyyy-MM-dd").format(DateTime.now());
}
myBoxDecoration() {
return BoxDecoration(
border: Border(
top: BorderSide(
color: Colors.green,
width: 5,
),
),
borderRadius: BorderRadius.circular(10));
}
@override
Size get preferredSize => Size(double.maxFinite, 200);
}

@ -47,7 +47,7 @@ class MasterKeyCheckboxSearchAllergiesWidget extends StatefulWidget {
class _MasterKeyCheckboxSearchAllergiesWidgetState extends State<MasterKeyCheckboxSearchAllergiesWidget> {
List<MasterKeyModel> items = [];
late MasterKeyModel _selectedAllergySeverity;
MasterKeyModel? _selectedAllergySeverity;
bool isSubmitted = false;
@override

Loading…
Cancel
Save