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( return Padding(
padding: EdgeInsets.symmetric(horizontal: getPaddingSize()), padding: EdgeInsets.symmetric(horizontal: getPaddingSize()),
child: ListView.builder( child: ListView.builder(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: mzansiProfileProvider.personalHome itemCount: mzansiProfileProvider.personalHome
? mihCalendarProvider.personalAppointments!.length ? mihCalendarProvider.personalAppointments!.length
: mihCalendarProvider.businessAppointments!.length, : mihCalendarProvider.businessAppointments!.length,

View File

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

View File

@@ -522,8 +522,6 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
builder: (BuildContext context, MzansiProfileProvider profileProvider, builder: (BuildContext context, MzansiProfileProvider profileProvider,
PatientManagerProvider patientManagerProvider, Widget? child) { PatientManagerProvider patientManagerProvider, Widget? child) {
return ListView.separated( return ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
separatorBuilder: (BuildContext context, index) { separatorBuilder: (BuildContext context, index) {
return Divider( return Divider(
color: MihColors.getSecondaryColor( 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_providers/patient_manager_provider.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_colors.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_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_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart';
@@ -34,38 +33,36 @@ class _MihPatientSearchState extends State<MihPatientSearch> {
return Consumer<PatientManagerProvider>( return Consumer<PatientManagerProvider>(
builder: (BuildContext context, builder: (BuildContext context,
PatientManagerProvider patientManagerProvider, Widget? child) { PatientManagerProvider patientManagerProvider, Widget? child) {
return MihSingleChildScroll( return Column(mainAxisSize: MainAxisSize.max, children: [
child: Column(mainAxisSize: MainAxisSize.max, children: [ Padding(
Padding( padding: EdgeInsets.symmetric(horizontal: width / 20),
padding: EdgeInsets.symmetric(horizontal: width / 20), child: MihSearchBar(
child: MihSearchBar( controller: _mihPatientSearchController,
controller: _mihPatientSearchController, hintText: "Search Patient ID/ Aid No.",
hintText: "Search Patient ID/ Aid No.", prefixIcon: Icons.search,
prefixIcon: Icons.search, fillColor: MihColors.getSecondaryColor(
fillColor: MihColors.getSecondaryColor( MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
MzansiInnovationHub.of(context)!.theme.mode == "Dark"), hintColor: MihColors.getPrimaryColor(
hintColor: MihColors.getPrimaryColor( MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
MzansiInnovationHub.of(context)!.theme.mode == "Dark"), onPrefixIconTap: () {
onPrefixIconTap: () { submitPatientSearch(patientManagerProvider);
submitPatientSearch(patientManagerProvider); },
}, onClearIconTap: () {
onClearIconTap: () { setState(() {
setState(() { _mihPatientSearchController.clear();
_mihPatientSearchController.clear(); _mihPatientSearchString = "";
_mihPatientSearchString = ""; });
}); patientManagerProvider
patientManagerProvider .setPatientSearchResults(patientSearchResults: []);
.setPatientSearchResults(patientSearchResults: []); },
}, searchFocusNode: _searchFocusNode,
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( Widget displayPatientList(
PatientManagerProvider patientManagerProvider, String searchString) { PatientManagerProvider patientManagerProvider, String searchString) {
if (patientManagerProvider.patientSearchResults.isNotEmpty) { if (patientManagerProvider.patientSearchResults.isNotEmpty) {
return BuildMihPatientSearchList(); return Expanded(
child: BuildMihPatientSearchList(),
);
} else if (patientManagerProvider.patientSearchResults.isEmpty && } else if (patientManagerProvider.patientSearchResults.isEmpty &&
searchString != "") { searchString != "") {
return Column( 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_providers/patient_manager_provider.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_colors.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_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_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart';
@@ -33,46 +32,44 @@ class _MyPatientListState extends State<MyPatientList> {
Widget myPatientListTool(MzansiProfileProvider profileProvider, Widget myPatientListTool(MzansiProfileProvider profileProvider,
PatientManagerProvider patientManagerProvider, double width) { PatientManagerProvider patientManagerProvider, double width) {
return MihSingleChildScroll( return Column(mainAxisSize: MainAxisSize.max, children: [
child: Column(mainAxisSize: MainAxisSize.max, children: [ Padding(
Padding( padding: EdgeInsets.symmetric(horizontal: width / 20),
padding: EdgeInsets.symmetric(horizontal: width / 20), child: MihSearchBar(
child: MihSearchBar( controller: _myPatientSearchController,
controller: _myPatientSearchController, hintText: "Search Patient ID",
hintText: "Search Patient ID", prefixIcon: Icons.search,
prefixIcon: Icons.search, fillColor: MihColors.getSecondaryColor(
fillColor: MihColors.getSecondaryColor( MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
MzansiInnovationHub.of(context)!.theme.mode == "Dark"), hintColor: MihColors.getPrimaryColor(
hintColor: MihColors.getPrimaryColor( MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
MzansiInnovationHub.of(context)!.theme.mode == "Dark"), onPrefixIconTap: () {
onPrefixIconTap: () { setState(() async {
setState(() async { _myPatientIdSearchString = _myPatientSearchController.text;
_myPatientIdSearchString = _myPatientSearchController.text; await MihPatientServices().getPatientAccessListOfBusiness(
await MihPatientServices().getPatientAccessListOfBusiness( patientManagerProvider,
patientManagerProvider, profileProvider.business!.business_id);
profileProvider.business!.business_id); });
}); },
}, onClearIconTap: () {
onClearIconTap: () { setState(() {
setState(() { _myPatientSearchController.clear();
_myPatientSearchController.clear(); _myPatientIdSearchString = "";
_myPatientIdSearchString = ""; });
}); getMyPatientList(profileProvider, patientManagerProvider);
getMyPatientList(profileProvider, patientManagerProvider); },
}, searchFocusNode: _searchFocusNode,
searchFocusNode: _searchFocusNode,
),
), ),
//spacer ),
const SizedBox(height: 10), //spacer
displayMyPatientList(patientManagerProvider), const SizedBox(height: 10),
]), displayMyPatientList(patientManagerProvider),
); ]);
} }
Widget displayMyPatientList(PatientManagerProvider patientManagerProvider) { Widget displayMyPatientList(PatientManagerProvider patientManagerProvider) {
if (patientManagerProvider.myPaitentList!.isNotEmpty) { if (patientManagerProvider.myPaitentList!.isNotEmpty) {
return BuildMyPatientListList(); return Expanded(child: BuildMyPatientListList());
} }
if (hasSearchedBefore && _myPatientIdSearchString.isNotEmpty) { if (hasSearchedBefore && _myPatientIdSearchString.isNotEmpty) {
return Column( return Column(
@@ -199,7 +196,6 @@ class _MyPatientListState extends State<MyPatientList> {
@override @override
void dispose() { void dispose() {
// TODO: implement dispose
super.dispose(); super.dispose();
_myPatientSearchController.dispose(); _myPatientSearchController.dispose();
_searchFocusNode.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_mzansi_calendar_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_validation_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_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_button.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart';
@@ -71,29 +70,22 @@ class _WaitingRoomState extends State<WaitingRoom> {
} }
return Stack( return Stack(
children: [ children: [
MihSingleChildScroll( Column(
child: Column( children: [
children: [ MIHCalendar(
MIHCalendar( calendarWidth: 500,
calendarWidth: 500, rowHeight: 35,
rowHeight: 35, setDate: (value) {
setDate: (value) { mihCalendarProvider.setSelectedDay(value);
mihCalendarProvider.setSelectedDay(value); setState(() {
setState(() { selectedAppointmentDateController.text = value;
selectedAppointmentDateController.text = value; });
}); }),
}), // Divider(
// Divider( // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
// color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), // ),
// ), displayAppointmentList(mihCalendarProvider)
Row( ],
mainAxisSize: MainAxisSize.max,
children: [
displayAppointmentList(mihCalendarProvider),
],
)
],
),
), ),
Positioned( Positioned(
right: 10, right: 10,

View File

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

View File

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

View File

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

View File

@@ -48,12 +48,7 @@ class _PatientClaimOrStatementState extends State<PatientClaimOrStatement> {
PatientManagerProvider patientManagerProvider, Widget? child) { PatientManagerProvider patientManagerProvider, Widget? child) {
return Stack( return Stack(
children: [ children: [
Column( BuildClaimStatementFileList(),
children: [
//const Placeholder(),
BuildClaimStatementFileList(),
],
),
Visibility( Visibility(
visible: !patientManagerProvider.personalMode, visible: !patientManagerProvider.personalMode,
child: Positioned( 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_alert_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_patient_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_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_button.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_form.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'; 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) { PatientManagerProvider patientManagerProvider, Widget? child) {
return Stack( return Stack(
children: [ children: [
MihSingleChildScroll( BuildNotesList(),
child: Column(children: [
BuildNotesList(),
])),
Visibility( Visibility(
visible: !patientManagerProvider.personalMode, visible: !patientManagerProvider.personalMode,
child: Positioned( 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_file_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_patient_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_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_button.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart';
import 'package:mzansi_innovation_hub/mih_package_components/mih_form.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) { PatientManagerProvider patientManagerProvider, Widget? child) {
return Stack( return Stack(
children: [ children: [
MihSingleChildScroll( BuildFilesList(),
child: Column(children: [
BuildFilesList(),
]),
),
getMenu(profileProvider, patientManagerProvider, width), getMenu(profileProvider, patientManagerProvider, width),
], ],
); );