add new search to pat man

This commit is contained in:
2025-05-30 13:24:55 +02:00
parent c2d93cda81
commit a058ff833a
2 changed files with 79 additions and 95 deletions

View File

@@ -1,8 +1,8 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_api_calls.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_api_calls.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_search_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_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_search_bar.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
import 'package:mzansi_innovation_hub/mih_env/env.dart'; import 'package:mzansi_innovation_hub/mih_env/env.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
@@ -35,11 +35,12 @@ class MihPatientSearch extends StatefulWidget {
class _MihPatientSearchState extends State<MihPatientSearch> { class _MihPatientSearchState extends State<MihPatientSearch> {
TextEditingController _mihPatientSearchController = TextEditingController(); TextEditingController _mihPatientSearchController = TextEditingController();
final FocusNode _focusNode = FocusNode(); final FocusNode _focusNode = FocusNode();
final FocusNode _searchFocusNode = FocusNode();
String _mihPatientSearchString = ""; String _mihPatientSearchString = "";
String baseUrl = AppEnviroment.baseApiUrl; String baseUrl = AppEnviroment.baseApiUrl;
late Future<List<Patient>> _mihPatientSearchResults; late Future<List<Patient>> _mihPatientSearchResults;
Widget getPatientSearch() { Widget getPatientSearch(double width) {
return MihSingleChildScroll( return MihSingleChildScroll(
child: KeyboardListener( child: KeyboardListener(
focusNode: _focusNode, focusNode: _focusNode,
@@ -54,39 +55,30 @@ class _MihPatientSearchState extends State<MihPatientSearch> {
} }
}, },
child: Column(mainAxisSize: MainAxisSize.max, children: [ child: Column(mainAxisSize: MainAxisSize.max, children: [
Row( Padding(
mainAxisSize: MainAxisSize.min, padding: EdgeInsets.symmetric(horizontal: width / 20),
children: [ child: MihSearchBar(
Flexible( controller: _mihPatientSearchController,
flex: 1, hintText: "Search by ID or Medical Aid No.",
child: MIHSearchField( prefixIcon: Icons.search,
controller: _mihPatientSearchController, fillColor:
hintText: "ID or Medical Aid No. Search", MzanziInnovationHub.of(context)!.theme.secondaryColor(),
required: false, hintColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
editable: true, onPrefixIconTap: () {
onTap: () { submitPatientSearch();
// submitPatientForm(); print("Search Text: ${_mihPatientSearchController.text}");
submitPatientSearch(); },
//To-Do: Implement the search function onClearIconTap: () {
// print("To-Do: Implement the search function"); setState(() {
}, _mihPatientSearchController.clear();
), _mihPatientSearchString = "";
), });
IconButton( submitPatientSearch();
onPressed: () { //To-Do: Implement the search function
setState(() { // print("To-Do: Implement the search function");
_mihPatientSearchController.clear(); },
_mihPatientSearchString = ""; searchFocusNode: _searchFocusNode,
}); ),
submitPatientSearch();
//To-Do: Implement the search function
// print("To-Do: Implement the search function");
},
icon: const Icon(
Icons.filter_alt_off,
size: 25,
))
],
), ),
//spacer //spacer
const SizedBox(height: 10), const SizedBox(height: 10),
@@ -211,12 +203,23 @@ class _MihPatientSearchState extends State<MihPatientSearch> {
_mihPatientSearchResults = MIHApiCalls.fetchPatients("abc"); _mihPatientSearchResults = MIHApiCalls.fetchPatients("abc");
} }
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_searchFocusNode.dispose();
_mihPatientSearchController.dispose();
_focusNode.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final Size size = MediaQuery.sizeOf(context);
final double width = size.width;
return MihPackageToolBody( return MihPackageToolBody(
borderOn: false, borderOn: false,
innerHorizontalPadding: 10, innerHorizontalPadding: 10,
bodyItem: getPatientSearch(), bodyItem: getPatientSearch(width),
); );
} }
} }

View File

@@ -1,8 +1,8 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_api_calls.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_api_calls.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_search_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_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_search_bar.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
import 'package:mzansi_innovation_hub/mih_env/env.dart'; import 'package:mzansi_innovation_hub/mih_env/env.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
@@ -34,12 +34,13 @@ class MyPatientList extends StatefulWidget {
class _MyPatientListState extends State<MyPatientList> { class _MyPatientListState extends State<MyPatientList> {
late Future<List<PatientAccess>> _myPatientList; late Future<List<PatientAccess>> _myPatientList;
TextEditingController _myPatientSearchController = TextEditingController(); TextEditingController _myPatientSearchController = TextEditingController();
final FocusNode _searchFocusNode = FocusNode();
String _myPatientIdSearchString = ""; String _myPatientIdSearchString = "";
String baseUrl = AppEnviroment.baseApiUrl; String baseUrl = AppEnviroment.baseApiUrl;
final FocusNode _focusNode = FocusNode(); final FocusNode _focusNode = FocusNode();
Widget myPatientListTool() { Widget myPatientListTool(double width) {
return MihSingleChildScroll( return MihSingleChildScroll(
child: KeyboardListener( child: KeyboardListener(
focusNode: _focusNode, focusNode: _focusNode,
@@ -55,62 +56,31 @@ class _MyPatientListState extends State<MyPatientList> {
} }
}, },
child: Column(mainAxisSize: MainAxisSize.max, children: [ child: Column(mainAxisSize: MainAxisSize.max, children: [
// Row( Padding(
// mainAxisAlignment: MainAxisAlignment.center, padding: EdgeInsets.symmetric(horizontal: width / 20),
// children: [ child: MihSearchBar(
// const Text( controller: _myPatientSearchController,
// "My Patient List", hintText: "Search by ID",
// style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold), prefixIcon: Icons.search,
// ), fillColor:
// IconButton( MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// iconSize: 20, hintColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
// icon: const Icon( onPrefixIconTap: () {
// Icons.refresh, setState(() {
// ), _myPatientIdSearchString = _myPatientSearchController.text;
// onPressed: () { _myPatientList = MIHApiCalls.getPatientAccessListOfBusiness(
// getMyPatientList(); widget.business!.business_id);
// }, });
// ), },
// ], onClearIconTap: () {
// ), setState(() {
// Divider( _myPatientSearchController.clear();
// color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), _myPatientIdSearchString = "";
// //spacer });
// const SizedBox(height: 10), getMyPatientList();
Row( },
mainAxisSize: MainAxisSize.min, searchFocusNode: _searchFocusNode,
children: [ ),
Flexible(
flex: 1,
child: MIHSearchField(
controller: _myPatientSearchController,
hintText: "Patient ID Search",
required: false,
editable: true,
onTap: () {
setState(() {
_myPatientIdSearchString =
_myPatientSearchController.text;
_myPatientList =
MIHApiCalls.getPatientAccessListOfBusiness(
widget.business!.business_id);
});
},
),
),
IconButton(
onPressed: () {
setState(() {
_myPatientSearchController.clear();
_myPatientIdSearchString = "";
});
getMyPatientList();
},
icon: const Icon(
Icons.filter_alt_off,
size: 25,
))
],
), ),
//spacer //spacer
const SizedBox(height: 10), const SizedBox(height: 10),
@@ -199,12 +169,23 @@ class _MyPatientListState extends State<MyPatientList> {
widget.business!.business_id); widget.business!.business_id);
} }
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_myPatientSearchController.dispose();
_searchFocusNode.dispose();
_focusNode.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final Size size = MediaQuery.sizeOf(context);
final double width = size.width;
return MihPackageToolBody( return MihPackageToolBody(
borderOn: false, borderOn: false,
innerHorizontalPadding: 10, innerHorizontalPadding: 10,
bodyItem: myPatientListTool(), bodyItem: myPatientListTool(width),
); );
} }
} }