Add new mih text form field to Appointments

This commit is contained in:
2025-06-04 11:56:33 +02:00
parent a86a2285a9
commit 29dae4f16c
2 changed files with 258 additions and 189 deletions

View File

@@ -1,12 +1,13 @@
import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_mzansi_calendar_apis.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_mzansi_calendar_apis.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_validation_services.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_date_input.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_date_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_multiline_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_time_input.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_time_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_form.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_text_form_field.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart';
import 'package:mzansi_innovation_hub/mih_env/env.dart'; import 'package:mzansi_innovation_hub/mih_env/env.dart';
@@ -57,6 +58,7 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
TextEditingController fnameController = TextEditingController(); TextEditingController fnameController = TextEditingController();
TextEditingController lnameController = TextEditingController(); TextEditingController lnameController = TextEditingController();
TextEditingController daysExtensionController = TextEditingController(); TextEditingController daysExtensionController = TextEditingController();
final _formKey = GlobalKey<FormState>();
int counter = 0; int counter = 0;
late double width; late double width;
late double height; late double height;
@@ -203,43 +205,53 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
windowBody: Column( windowBody: Column(
children: [ children: [
const SizedBox(height: 10), const SizedBox(height: 10),
SizedBox( MihTextFormField(
// width: 500, fillColor:
child: MIHTextField( MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: widget.titleController, controller: widget.titleController,
hintText: "Title", multiLineInput: false,
editable: false, requiredText: true,
required: false, readOnly: true,
), hintText: "Appointment Title",
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
SizedBox( MihTextFormField(
// width: 500, fillColor:
child: MIHTextField( MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: widget.dateController, controller: widget.dateController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "Date", hintText: "Date",
editable: false,
required: false,
)),
const SizedBox(height: 10),
SizedBox(
// width: 500,
child: MIHTextField(
controller: widget.timeController,
hintText: "Time",
editable: false,
required: false,
)),
const SizedBox(height: 10),
SizedBox(
// width: 500,
height: 250,
child: MIHMLTextField(
controller: widget.descriptionIDController,
hintText: "Description",
editable: false,
required: false,
), ),
const SizedBox(height: 10),
MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: widget.timeController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "Time",
),
const SizedBox(height: 10),
MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: widget.descriptionIDController,
multiLineInput: true,
height: 250,
requiredText: true,
readOnly: true,
hintText: "Appointment Description",
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
], ],
@@ -304,55 +316,66 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
}, },
windowBody: Column( windowBody: Column(
children: [ children: [
SizedBox( const SizedBox(height: 10),
// width: 500, MihTextFormField(
child: MIHTextField( fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: widget.titleController, controller: widget.titleController,
hintText: "Title", multiLineInput: false,
editable: false, requiredText: true,
required: false, readOnly: true,
), hintText: "Appointment Title",
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
SizedBox( MihTextFormField(
// width: 500, fillColor:
child: MIHTextField( MzanziInnovationHub.of(context)!.theme.secondaryColor(),
controller: widget.titleController, inputColor:
hintText: "Patient ID Number", MzanziInnovationHub.of(context)!.theme.primaryColor(),
editable: false,
required: false,
),
),
const SizedBox(height: 10),
SizedBox(
// width: 500,
child: MIHTextField(
controller: widget.dateController, controller: widget.dateController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "Date", hintText: "Date",
editable: false, ),
required: false,
)),
const SizedBox(height: 10), const SizedBox(height: 10),
SizedBox( MihTextFormField(
// width: 500, fillColor:
child: MIHTextField( MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: widget.timeController, controller: widget.timeController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "Time", hintText: "Time",
editable: false, ),
required: false,
)),
const SizedBox(height: 10), const SizedBox(height: 10),
SizedBox( MihTextFormField(
// width: 500, fillColor:
height: 250, MzanziInnovationHub.of(context)!.theme.secondaryColor(),
child: MIHMLTextField( inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: widget.descriptionIDController, controller: widget.descriptionIDController,
hintText: "Description", multiLineInput: true,
editable: false, height: 250,
required: false, requiredText: true,
readOnly: true,
hintText: "Appointment Description",
), ),
), const SizedBox(height: 10),
const SizedBox(height: 20), // SizedBox(
// // width: 500,
// child: MIHTextField(
// controller: widget.titleController,
// hintText: "Patient ID Number",
// editable: false,
// required: false,
// ),
// ),
// const SizedBox(height: 10),
], ],
), ),
); );
@@ -384,15 +407,31 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
}, },
windowBody: Column( windowBody: Column(
children: [ children: [
SizedBox( MihForm(
// width: 500, formKey: _formKey,
child: MIHTextField( formFields: [
MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: widget.titleController, controller: widget.titleController,
hintText: "Title", multiLineInput: false,
editable: true, requiredText: true,
required: true, hintText: "Appointment Title",
), validator: (value) {
return MihValidationServices().isEmpty(value);
},
), ),
// SizedBox(
// // width: 500,
// child: MIHTextField(
// controller: widget.titleController,
// hintText: "Title",
// editable: true,
// required: true,
// ),
// ),
const SizedBox(height: 10), const SizedBox(height: 10),
SizedBox( SizedBox(
// width: 500, // width: 500,
@@ -412,18 +451,23 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
), ),
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
SizedBox( MihTextFormField(
// width: 500, fillColor:
height: 250, MzanziInnovationHub.of(context)!.theme.secondaryColor(),
child: MIHMLTextField( inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: widget.descriptionIDController, controller: widget.descriptionIDController,
hintText: "Description", multiLineInput: true,
editable: true, height: 250,
required: true, requiredText: true,
), hintText: "Appointment Description",
validator: (value) {
return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
Wrap( Center(
child: Wrap(
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
runSpacing: 10, runSpacing: 10,
spacing: 10, spacing: 10,
@@ -432,8 +476,9 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
onPressed: () { onPressed: () {
updateAppointmentCall(index); updateAppointmentCall(index);
}, },
buttonColor: buttonColor: MzanziInnovationHub.of(context)!
MzanziInnovationHub.of(context)!.theme.successColor(), .theme
.successColor(),
width: 300, width: 300,
child: Text( child: Text(
"Update", "Update",
@@ -447,7 +492,10 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
), ),
), ),
], ],
) ),
),
],
),
], ],
), ),
); );

View File

@@ -1,14 +1,15 @@
import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_mzansi_calendar_apis.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_mzansi_calendar_apis.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_validation_services.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_date_input.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_date_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_multiline_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_time_input.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_time_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_form.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_text_form_field.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart';
import 'package:mzansi_innovation_hub/mih_objects/appointment.dart'; import 'package:mzansi_innovation_hub/mih_objects/appointment.dart';
import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart';
@@ -59,6 +60,8 @@ class _PatientAccessRequestState extends State<Appointments> {
late Future<List<Appointment>> businessAppointmentResults; late Future<List<Appointment>> businessAppointmentResults;
late Future<List<Appointment>> appointmentResults; late Future<List<Appointment>> appointmentResults;
final _formKey = GlobalKey<FormState>();
Widget displayAppointmentList(List<Appointment> appointmentList) { Widget displayAppointmentList(List<Appointment> appointmentList) {
if (appointmentList.isNotEmpty) { if (appointmentList.isNotEmpty) {
return Expanded( return Expanded(
@@ -113,14 +116,21 @@ class _PatientAccessRequestState extends State<Appointments> {
}, },
windowBody: Column( windowBody: Column(
children: [ children: [
SizedBox( MihForm(
// width: 500, formKey: _formKey,
child: MIHTextField( formFields: [
MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: _appointmentTitleController, controller: _appointmentTitleController,
hintText: "Title", multiLineInput: false,
editable: true, requiredText: true,
required: true, hintText: "Appointment Title",
), validator: (value) {
return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
SizedBox( SizedBox(
@@ -141,20 +151,27 @@ class _PatientAccessRequestState extends State<Appointments> {
), ),
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
SizedBox( MihTextFormField(
// width: 500, fillColor:
height: 250, MzanziInnovationHub.of(context)!.theme.secondaryColor(),
child: MIHMLTextField( inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: _appointmentDescriptionIDController, controller: _appointmentDescriptionIDController,
hintText: "Description", multiLineInput: true,
editable: true, height: 250,
required: true, requiredText: true,
), hintText: "Appointment Description",
validator: (value) {
return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
MihButton( Center(
child: MihButton(
onPressed: () { onPressed: () {
if (_formKey.currentState!.validate()) {
addAppointmentCall(); addAppointmentCall();
}
}, },
buttonColor: buttonColor:
MzanziInnovationHub.of(context)!.theme.successColor(), MzanziInnovationHub.of(context)!.theme.successColor(),
@@ -162,13 +179,17 @@ class _PatientAccessRequestState extends State<Appointments> {
child: Text( child: Text(
"Add", "Add",
style: TextStyle( style: TextStyle(
color: color: MzanziInnovationHub.of(context)!
MzanziInnovationHub.of(context)!.theme.primaryColor(), .theme
.primaryColor(),
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
), ),
),
],
),
], ],
), ),
); );