QOL: Patient Manager Package performance improvements pt2

This commit is contained in:
2025-11-28 13:22:54 +02:00
parent 730c5d2bdf
commit cd8115c597
12 changed files with 83 additions and 122 deletions

View File

@@ -748,8 +748,6 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
return Padding(
padding: EdgeInsets.symmetric(horizontal: getPaddingSize()),
child: ListView.builder(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: mzansiProfileProvider.personalHome
? mihCalendarProvider.personalAppointments!.length
: mihCalendarProvider.businessAppointments!.length,

View File

@@ -558,8 +558,6 @@ class _BuildPatientsListState extends State<BuildMihPatientSearchList> {
builder: (BuildContext context, MzansiProfileProvider profileProvider,
PatientManagerProvider patientManagerProvider, Widget? child) {
return ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
separatorBuilder: (BuildContext context, index) {
return Divider(
color: MihColors.getSecondaryColor(

View File

@@ -522,8 +522,6 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
builder: (BuildContext context, MzansiProfileProvider profileProvider,
PatientManagerProvider patientManagerProvider, Widget? child) {
return ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
separatorBuilder: (BuildContext context, index) {
return Divider(
color: MihColors.getSecondaryColor(

View File

@@ -3,7 +3,6 @@ import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_env.dart';
@@ -34,38 +33,36 @@ class _MihPatientSearchState extends State<MihPatientSearch> {
return Consumer<PatientManagerProvider>(
builder: (BuildContext context,
PatientManagerProvider patientManagerProvider, Widget? child) {
return MihSingleChildScroll(
child: Column(mainAxisSize: MainAxisSize.max, children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: width / 20),
child: MihSearchBar(
controller: _mihPatientSearchController,
hintText: "Search Patient ID/ Aid No.",
prefixIcon: Icons.search,
fillColor: MihColors.getSecondaryColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
hintColor: MihColors.getPrimaryColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
onPrefixIconTap: () {
submitPatientSearch(patientManagerProvider);
},
onClearIconTap: () {
setState(() {
_mihPatientSearchController.clear();
_mihPatientSearchString = "";
});
patientManagerProvider
.setPatientSearchResults(patientSearchResults: []);
},
searchFocusNode: _searchFocusNode,
),
return Column(mainAxisSize: MainAxisSize.max, children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: width / 20),
child: MihSearchBar(
controller: _mihPatientSearchController,
hintText: "Search Patient ID/ Aid No.",
prefixIcon: Icons.search,
fillColor: MihColors.getSecondaryColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
hintColor: MihColors.getPrimaryColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
onPrefixIconTap: () {
submitPatientSearch(patientManagerProvider);
},
onClearIconTap: () {
setState(() {
_mihPatientSearchController.clear();
_mihPatientSearchString = "";
});
patientManagerProvider
.setPatientSearchResults(patientSearchResults: []);
},
searchFocusNode: _searchFocusNode,
),
//spacer
const SizedBox(height: 10),
),
//spacer
const SizedBox(height: 10),
displayPatientList(patientManagerProvider, _mihPatientSearchString),
]),
);
displayPatientList(patientManagerProvider, _mihPatientSearchString),
]);
},
);
}
@@ -86,7 +83,9 @@ class _MihPatientSearchState extends State<MihPatientSearch> {
Widget displayPatientList(
PatientManagerProvider patientManagerProvider, String searchString) {
if (patientManagerProvider.patientSearchResults.isNotEmpty) {
return BuildMihPatientSearchList();
return Expanded(
child: BuildMihPatientSearchList(),
);
} else if (patientManagerProvider.patientSearchResults.isEmpty &&
searchString != "") {
return Column(

View File

@@ -4,7 +4,6 @@ import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart
import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_env.dart';
@@ -33,46 +32,44 @@ class _MyPatientListState extends State<MyPatientList> {
Widget myPatientListTool(MzansiProfileProvider profileProvider,
PatientManagerProvider patientManagerProvider, double width) {
return MihSingleChildScroll(
child: Column(mainAxisSize: MainAxisSize.max, children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: width / 20),
child: MihSearchBar(
controller: _myPatientSearchController,
hintText: "Search Patient ID",
prefixIcon: Icons.search,
fillColor: MihColors.getSecondaryColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
hintColor: MihColors.getPrimaryColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
onPrefixIconTap: () {
setState(() async {
_myPatientIdSearchString = _myPatientSearchController.text;
await MihPatientServices().getPatientAccessListOfBusiness(
patientManagerProvider,
profileProvider.business!.business_id);
});
},
onClearIconTap: () {
setState(() {
_myPatientSearchController.clear();
_myPatientIdSearchString = "";
});
getMyPatientList(profileProvider, patientManagerProvider);
},
searchFocusNode: _searchFocusNode,
),
return Column(mainAxisSize: MainAxisSize.max, children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: width / 20),
child: MihSearchBar(
controller: _myPatientSearchController,
hintText: "Search Patient ID",
prefixIcon: Icons.search,
fillColor: MihColors.getSecondaryColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
hintColor: MihColors.getPrimaryColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
onPrefixIconTap: () {
setState(() async {
_myPatientIdSearchString = _myPatientSearchController.text;
await MihPatientServices().getPatientAccessListOfBusiness(
patientManagerProvider,
profileProvider.business!.business_id);
});
},
onClearIconTap: () {
setState(() {
_myPatientSearchController.clear();
_myPatientIdSearchString = "";
});
getMyPatientList(profileProvider, patientManagerProvider);
},
searchFocusNode: _searchFocusNode,
),
//spacer
const SizedBox(height: 10),
displayMyPatientList(patientManagerProvider),
]),
);
),
//spacer
const SizedBox(height: 10),
displayMyPatientList(patientManagerProvider),
]);
}
Widget displayMyPatientList(PatientManagerProvider patientManagerProvider) {
if (patientManagerProvider.myPaitentList!.isNotEmpty) {
return BuildMyPatientListList();
return Expanded(child: BuildMyPatientListList());
}
if (hasSearchedBefore && _myPatientIdSearchString.isNotEmpty) {
return Column(
@@ -199,7 +196,6 @@ class _MyPatientListState extends State<MyPatientList> {
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_myPatientSearchController.dispose();
_searchFocusNode.dispose();

View File

@@ -10,7 +10,6 @@ import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_calendar_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_calendar.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart';
@@ -71,29 +70,22 @@ class _WaitingRoomState extends State<WaitingRoom> {
}
return Stack(
children: [
MihSingleChildScroll(
child: Column(
children: [
MIHCalendar(
calendarWidth: 500,
rowHeight: 35,
setDate: (value) {
mihCalendarProvider.setSelectedDay(value);
setState(() {
selectedAppointmentDateController.text = value;
});
}),
// Divider(
// color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
// ),
Row(
mainAxisSize: MainAxisSize.max,
children: [
displayAppointmentList(mihCalendarProvider),
],
)
],
),
Column(
children: [
MIHCalendar(
calendarWidth: 500,
rowHeight: 35,
setDate: (value) {
mihCalendarProvider.setSelectedDay(value);
setState(() {
selectedAppointmentDateController.text = value;
});
}),
// Divider(
// color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
// ),
displayAppointmentList(mihCalendarProvider)
],
),
Positioned(
right: 10,

View File

@@ -266,8 +266,6 @@ class _BuildClaimStatementFileListState
PatientManagerProvider patientManagerProvider, Widget? child) {
if (patientManagerProvider.patientClaimsDocuments!.isNotEmpty) {
return ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
separatorBuilder: (BuildContext context, int index) {
return Divider(
color: MihColors.getSecondaryColor(

View File

@@ -299,8 +299,6 @@ class _BuildFilesListState extends State<BuildFilesList> {
PatientManagerProvider patientManagerProvider, Widget? child) {
if (patientManagerProvider.patientDocuments!.isNotEmpty) {
return ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
separatorBuilder: (BuildContext context, int index) {
return Divider(
color: MihColors.getSecondaryColor(

View File

@@ -222,8 +222,6 @@ class _BuildNotesListState extends State<BuildNotesList> {
PatientManagerProvider patientManagerProvider, Widget? child) {
if (patientManagerProvider.consultationNotes!.isNotEmpty) {
return ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
separatorBuilder: (BuildContext context, int index) {
return Divider(
color: MihColors.getSecondaryColor(

View File

@@ -48,12 +48,7 @@ class _PatientClaimOrStatementState extends State<PatientClaimOrStatement> {
PatientManagerProvider patientManagerProvider, Widget? child) {
return Stack(
children: [
Column(
children: [
//const Placeholder(),
BuildClaimStatementFileList(),
],
),
BuildClaimStatementFileList(),
Visibility(
visible: !patientManagerProvider.personalMode,
child: Positioned(

View File

@@ -8,7 +8,6 @@ import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart';
@@ -290,10 +289,7 @@ class _PatientConsultationState extends State<PatientConsultation> {
PatientManagerProvider patientManagerProvider, Widget? child) {
return Stack(
children: [
MihSingleChildScroll(
child: Column(children: [
BuildNotesList(),
])),
BuildNotesList(),
Visibility(
visible: !patientManagerProvider.personalMode,
child: Positioned(

View File

@@ -8,7 +8,6 @@ import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart';
@@ -565,11 +564,7 @@ class _PatientDocumentsState extends State<PatientDocuments> {
PatientManagerProvider patientManagerProvider, Widget? child) {
return Stack(
children: [
MihSingleChildScroll(
child: Column(children: [
BuildFilesList(),
]),
),
BuildFilesList(),
getMenu(profileProvider, patientManagerProvider, width),
],
);