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,26 +55,20 @@ 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(
flex: 1,
child: MIHSearchField(
controller: _mihPatientSearchController, controller: _mihPatientSearchController,
hintText: "ID or Medical Aid No. Search", hintText: "Search by ID or Medical Aid No.",
required: false, prefixIcon: Icons.search,
editable: true, fillColor:
onTap: () { MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// submitPatientForm(); hintColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
onPrefixIconTap: () {
submitPatientSearch(); submitPatientSearch();
//To-Do: Implement the search function print("Search Text: ${_mihPatientSearchController.text}");
// print("To-Do: Implement the search function");
}, },
), onClearIconTap: () {
),
IconButton(
onPressed: () {
setState(() { setState(() {
_mihPatientSearchController.clear(); _mihPatientSearchController.clear();
_mihPatientSearchString = ""; _mihPatientSearchString = "";
@@ -82,11 +77,8 @@ class _MihPatientSearchState extends State<MihPatientSearch> {
//To-Do: Implement the search function //To-Do: Implement the search function
// print("To-Do: Implement the search function"); // print("To-Do: Implement the search function");
}, },
icon: const Icon( searchFocusNode: _searchFocusNode,
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(
// "My Patient List",
// style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold),
// ),
// IconButton(
// iconSize: 20,
// icon: const Icon(
// Icons.refresh,
// ),
// onPressed: () {
// getMyPatientList();
// },
// ),
// ],
// ),
// Divider(
// color: MzanziInnovationHub.of(context)!.theme.secondaryColor()),
// //spacer
// const SizedBox(height: 10),
Row(
mainAxisSize: MainAxisSize.min,
children: [
Flexible(
flex: 1,
child: MIHSearchField(
controller: _myPatientSearchController, controller: _myPatientSearchController,
hintText: "Patient ID Search", hintText: "Search by ID",
required: false, prefixIcon: Icons.search,
editable: true, fillColor:
onTap: () { MzanziInnovationHub.of(context)!.theme.secondaryColor(),
hintColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
onPrefixIconTap: () {
setState(() { setState(() {
_myPatientIdSearchString = _myPatientIdSearchString = _myPatientSearchController.text;
_myPatientSearchController.text; _myPatientList = MIHApiCalls.getPatientAccessListOfBusiness(
_myPatientList =
MIHApiCalls.getPatientAccessListOfBusiness(
widget.business!.business_id); widget.business!.business_id);
}); });
}, },
), onClearIconTap: () {
),
IconButton(
onPressed: () {
setState(() { setState(() {
_myPatientSearchController.clear(); _myPatientSearchController.clear();
_myPatientIdSearchString = ""; _myPatientIdSearchString = "";
}); });
getMyPatientList(); getMyPatientList();
}, },
icon: const Icon( searchFocusNode: _searchFocusNode,
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),
); );
} }
} }