diff --git a/Frontend/lib/mih_components/mih_layout/mih_single_child_scroll.dart b/Frontend/lib/mih_components/mih_layout/mih_single_child_scroll.dart new file mode 100644 index 00000000..76f964e7 --- /dev/null +++ b/Frontend/lib/mih_components/mih_layout/mih_single_child_scroll.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; + +class MihSingleChildScroll extends StatefulWidget { + final Widget child; + const MihSingleChildScroll({ + super.key, + required this.child, + }); + + @override + State createState() => _MihSingleChildScrollState(); +} + +class _MihSingleChildScrollState extends State { + @override + Widget build(BuildContext context) { + return SafeArea( + child: ScrollConfiguration( + behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false), + child: SingleChildScrollView( + child: widget.child, + ), + ), + ); + } +} diff --git a/Frontend/lib/mih_packages/about_mih/app_tools/mih_info.dart b/Frontend/lib/mih_packages/about_mih/app_tools/mih_info.dart index 1f26774c..6eb89b5b 100644 --- a/Frontend/lib/mih_packages/about_mih/app_tools/mih_info.dart +++ b/Frontend/lib/mih_packages/about_mih/app_tools/mih_info.dart @@ -1,5 +1,6 @@ import 'package:Mzansi_Innovation_Hub/main.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_button.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_tile.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app_window.dart'; @@ -577,7 +578,7 @@ class _MihInfoState extends State { } Widget getBody() { - return SingleChildScrollView( + return MihSingleChildScroll( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 10.0), child: Column( diff --git a/Frontend/lib/mih_packages/about_mih/app_tools/mih_privacy_policy.dart b/Frontend/lib/mih_packages/about_mih/app_tools/mih_privacy_policy.dart index 52cf5d11..b6d53a6c 100644 --- a/Frontend/lib/mih_packages/about_mih/app_tools/mih_privacy_policy.dart +++ b/Frontend/lib/mih_packages/about_mih/app_tools/mih_privacy_policy.dart @@ -1,3 +1,4 @@ +import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_single_child_scroll.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart'; import 'package:flutter/material.dart'; @@ -14,7 +15,7 @@ class MihPrivacyPolicy extends StatelessWidget { } Widget getBody(BuildContext context) { - return SingleChildScrollView( + return MihSingleChildScroll( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 10.0), child: Column( diff --git a/Frontend/lib/mih_packages/about_mih/app_tools/mih_terms_of_service.dart b/Frontend/lib/mih_packages/about_mih/app_tools/mih_terms_of_service.dart index d57aa05f..e6ed6f71 100644 --- a/Frontend/lib/mih_packages/about_mih/app_tools/mih_terms_of_service.dart +++ b/Frontend/lib/mih_packages/about_mih/app_tools/mih_terms_of_service.dart @@ -1,3 +1,4 @@ +import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_single_child_scroll.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart'; import 'package:flutter/material.dart'; @@ -14,7 +15,7 @@ class MIHTermsOfService extends StatelessWidget { } Widget getBody(BuildContext context) { - return SingleChildScrollView( + return MihSingleChildScroll( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 10.0), child: Column( diff --git a/Frontend/lib/mih_packages/access_review/mih_access_requests.dart b/Frontend/lib/mih_packages/access_review/app_tools/mih_access_requests.dart similarity index 91% rename from Frontend/lib/mih_packages/access_review/mih_access_requests.dart rename to Frontend/lib/mih_packages/access_review/app_tools/mih_access_requests.dart index cef27373..cb1b1171 100644 --- a/Frontend/lib/mih_packages/access_review/mih_access_requests.dart +++ b/Frontend/lib/mih_packages/access_review/app_tools/mih_access_requests.dart @@ -1,16 +1,17 @@ +import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_single_child_scroll.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; import 'package:Mzansi_Innovation_Hub/mih_objects/arguments.dart'; import 'package:flutter/material.dart'; -import '../../main.dart'; -import '../../mih_apis/mih_api_calls.dart'; -import '../../mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart'; -import '../../mih_components/mih_layout/mih_action.dart'; -import '../../mih_components/mih_layout/mih_header.dart'; -import '../../mih_components/mih_pop_up_messages/mih_loading_circle.dart'; -import '../../mih_env/env.dart'; -import '../../mih_objects/app_user.dart'; -import '../../mih_objects/patient_access.dart'; -import 'builder/build_business_access_list.dart'; +import '../../../main.dart'; +import '../../../mih_apis/mih_api_calls.dart'; +import '../../../mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart'; +import '../../../mih_components/mih_layout/mih_action.dart'; +import '../../../mih_components/mih_layout/mih_header.dart'; +import '../../../mih_components/mih_pop_up_messages/mih_loading_circle.dart'; +import '../../../mih_env/env.dart'; +import '../../../mih_objects/app_user.dart'; +import '../../../mih_objects/patient_access.dart'; +import '../builder/build_business_access_list.dart'; class MihAccessRequest extends StatefulWidget { final AppUser signedInUser; @@ -127,7 +128,7 @@ class _MihAccessRequestState extends State { } Widget getBody() { - return SingleChildScrollView( + return MihSingleChildScroll( child: Column( children: [ const Text( diff --git a/Frontend/lib/mih_packages/access_review/mih_access.dart b/Frontend/lib/mih_packages/access_review/mih_access.dart index f3021278..40100ca6 100644 --- a/Frontend/lib/mih_packages/access_review/mih_access.dart +++ b/Frontend/lib/mih_packages/access_review/mih_access.dart @@ -2,7 +2,7 @@ import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app_action.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app_tools.dart'; import 'package:Mzansi_Innovation_Hub/mih_objects/app_user.dart'; -import 'package:Mzansi_Innovation_Hub/mih_packages/access_review/mih_access_requests.dart'; +import 'package:Mzansi_Innovation_Hub/mih_packages/access_review/app_tools/mih_access_requests.dart'; import 'package:flutter/material.dart'; class MihAccess extends StatefulWidget { diff --git a/Frontend/lib/mih_packages/calculator/app_tools/simple_calc.dart b/Frontend/lib/mih_packages/calculator/app_tools/simple_calc.dart index 39d77b73..32e12b9e 100644 --- a/Frontend/lib/mih_packages/calculator/app_tools/simple_calc.dart +++ b/Frontend/lib/mih_packages/calculator/app_tools/simple_calc.dart @@ -1,5 +1,6 @@ import 'package:Mzansi_Innovation_Hub/main.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_button.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_single_child_scroll.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; import 'package:flutter/material.dart'; import 'package:math_expressions/math_expressions.dart'; @@ -73,219 +74,231 @@ class _SimpleCalcState extends State { calcWidth = 300; } } - return Column( - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Text( - "Simple Calculator", - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 25, - fontWeight: FontWeight.bold, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - ), - ), - Divider(color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - Container( - //color: Colors.white, - padding: const EdgeInsets.all(20), - alignment: Alignment.centerRight, - child: Text( - userInput, + return MihSingleChildScroll( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "Simple Calculator", + textAlign: TextAlign.center, style: TextStyle( - fontSize: 18, + fontSize: 25, + fontWeight: FontWeight.bold, color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), ), ), - ), - Container( - width: double.infinity, - //color: Colors.white, - padding: const EdgeInsets.all(15), - alignment: Alignment.centerRight, - child: Text( - answer, - style: TextStyle( - fontSize: 30, + Divider( + color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), + const SizedBox(height: 10), + Container( + //color: Colors.white, + padding: const EdgeInsets.all(20), + alignment: Alignment.centerRight, + child: Text( + userInput, + style: TextStyle( + fontSize: 18, color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - fontWeight: FontWeight.bold), - ), - ), - Container( - alignment: Alignment.centerRight, - child: SizedBox( - width: calcWidth, - child: GridView.builder( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - // padding: EdgeInsets.only( - // left: width / 10, - // right: width / 10, - // bottom: height / 15, - // //top: 20, - // ), - // shrinkWrap: true, - itemCount: buttons.length, - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 4, - //mainAxisExtent: 150, ), - itemBuilder: (context, index) { - // Clear Button - if (index == 0) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - userInput = ''; - answer = '0'; - }); - }, - buttonText: buttons[index], - buttonColor: MzanziInnovationHub.of(context)! - .theme - .messageTextColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - - // +/- button - else if (index == 1) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - userInput += buttons[index]; - }); - }, - buttonText: buttons[index], - buttonColor: MzanziInnovationHub.of(context)! - .theme - .messageTextColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - // % Button - else if (index == 2) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - userInput += buttons[index]; - }); - }, - buttonText: buttons[index], - buttonColor: MzanziInnovationHub.of(context)! - .theme - .messageTextColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - // Delete Button - else if (index == 3) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - userInput = - userInput.substring(0, userInput.length - 1); - }); - }, - buttonText: buttons[index], - buttonColor: - MzanziInnovationHub.of(context)!.theme.errorColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - // Equal_to Button - else if (index == 18) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - equalPressed(); - }); - }, - buttonText: buttons[index], - buttonColor: - MzanziInnovationHub.of(context)!.theme.successColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - // +, -, / x buttons - else if (index == 7 || - index == 11 || - index == 15 || - index == 19) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - if (answer == "0") { - setState(() { - userInput += buttons[index]; - }); - } else { - setState(() { - userInput = answer; - answer = "0"; - userInput += buttons[index]; - }); - } - // setState(() { - // userInput += buttons[index]; - // }); - }, - buttonText: buttons[index], - buttonColor: MzanziInnovationHub.of(context)! - .theme - .messageTextColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - // other buttons - else { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - userInput += buttons[index]; - }); - }, - buttonText: buttons[index], - buttonColor: MzanziInnovationHub.of(context)! - .theme - .secondaryColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - }, ), ), - ), - ], + Container( + width: double.infinity, + //color: Colors.white, + padding: const EdgeInsets.all(15), + alignment: Alignment.centerRight, + child: Text( + answer, + style: TextStyle( + fontSize: 30, + color: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + fontWeight: FontWeight.bold), + ), + ), + Container( + alignment: Alignment.centerRight, + child: SizedBox( + width: calcWidth, + child: GridView.builder( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + // padding: EdgeInsets.only( + // left: width / 10, + // right: width / 10, + // bottom: height / 15, + // //top: 20, + // ), + // shrinkWrap: true, + itemCount: buttons.length, + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 4, + //mainAxisExtent: 150, + ), + itemBuilder: (context, index) { + // Clear Button + if (index == 0) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + userInput = ''; + answer = '0'; + }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .messageTextColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + + // +/- button + else if (index == 1) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + userInput += buttons[index]; + }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .messageTextColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + // % Button + else if (index == 2) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + userInput += buttons[index]; + }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .messageTextColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + // Delete Button + else if (index == 3) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + userInput = + userInput.substring(0, userInput.length - 1); + }); + }, + buttonText: buttons[index], + buttonColor: + MzanziInnovationHub.of(context)!.theme.errorColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + // Equal_to Button + else if (index == 18) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + equalPressed(); + }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .successColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + // +, -, / x buttons + else if (index == 7 || + index == 11 || + index == 15 || + index == 19) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + if (answer == "0") { + setState(() { + userInput += buttons[index]; + }); + } else { + setState(() { + userInput = answer; + answer = "0"; + userInput += buttons[index]; + }); + } + // setState(() { + // userInput += buttons[index]; + // }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .messageTextColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + // other buttons + else { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + userInput += buttons[index]; + }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + }, + ), + ), + ), + ], + ), ); } } diff --git a/Frontend/lib/mih_packages/calculator/app_tools/tip_calc.dart b/Frontend/lib/mih_packages/calculator/app_tools/tip_calc.dart index 85ef7e8f..30ec2eb3 100644 --- a/Frontend/lib/mih_packages/calculator/app_tools/tip_calc.dart +++ b/Frontend/lib/mih_packages/calculator/app_tools/tip_calc.dart @@ -2,6 +2,7 @@ import 'package:Mzansi_Innovation_Hub/main.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_button.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_number_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_window.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_pop_up_messages/mih_error_message.dart'; @@ -268,91 +269,95 @@ class _TipCalcState extends State { } Widget getBody() { - return Column( - mainAxisSize: MainAxisSize.max, - children: [ - Text( - "Tip Calculator", - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 25, - fontWeight: FontWeight.bold, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + return MihSingleChildScroll( + child: Column( + mainAxisSize: MainAxisSize.max, + children: [ + Text( + "Tip Calculator", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), ), - ), - Divider(color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - MIHNumberField( - controller: billAmountController, - hintText: "Bill Amount", - editable: true, - required: true, - enableDecimal: true, - ), - const SizedBox(height: 10), - MIHNumberField( - controller: tipPercentageController, - hintText: "Tip %", - editable: true, - required: true, - enableDecimal: false, - ), - const SizedBox(height: 10), - MIHDropdownField( - controller: splitBillController, - hintText: "Split Bill", - dropdownOptions: const ["Yes", "No"], - required: true, - editable: true, - enableSearch: false, - ), - const SizedBox(height: 10), - ValueListenableBuilder( - valueListenable: splitValue, - builder: (BuildContext context, String value, Widget? child) { - return Visibility( - visible: value == "Yes", - child: Column( - children: [ - MIHNumberField( - controller: noPeopleController, - hintText: "No. of People", - editable: true, - required: true, - enableDecimal: false, - ), - const SizedBox(height: 10), - ], - ), - ); - }, - ), - SizedBox( - width: double.infinity, - height: 50, - child: MIHButton( - onTap: () { - validateInput(); + Divider( + color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), + const SizedBox(height: 10), + MIHNumberField( + controller: billAmountController, + hintText: "Bill Amount", + editable: true, + required: true, + enableDecimal: true, + ), + const SizedBox(height: 10), + MIHNumberField( + controller: tipPercentageController, + hintText: "Tip %", + editable: true, + required: true, + enableDecimal: false, + ), + const SizedBox(height: 10), + MIHDropdownField( + controller: splitBillController, + hintText: "Split Bill", + dropdownOptions: const ["Yes", "No"], + required: true, + editable: true, + enableSearch: false, + ), + const SizedBox(height: 10), + ValueListenableBuilder( + valueListenable: splitValue, + builder: (BuildContext context, String value, Widget? child) { + return Visibility( + visible: value == "Yes", + child: Column( + children: [ + MIHNumberField( + controller: noPeopleController, + hintText: "No. of People", + editable: true, + required: true, + enableDecimal: false, + ), + const SizedBox(height: 10), + ], + ), + ); }, - buttonText: "Calculate", - buttonColor: MzanziInnovationHub.of(context)!.theme.successColor(), - textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), ), - ), - const SizedBox(height: 10), - SizedBox( - width: double.infinity, - height: 50, - child: MIHButton( - onTap: () { - clearInput(); - }, - buttonText: "Clear", - buttonColor: MzanziInnovationHub.of(context)!.theme.errorColor(), - textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + SizedBox( + width: double.infinity, + height: 50, + child: MIHButton( + onTap: () { + validateInput(); + }, + buttonText: "Calculate", + buttonColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), ), - ), - ], + const SizedBox(height: 10), + SizedBox( + width: double.infinity, + height: 50, + child: MIHButton( + onTap: () { + clearInput(); + }, + buttonText: "Clear", + buttonColor: MzanziInnovationHub.of(context)!.theme.errorColor(), + textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + ), + ], + ), ); } } diff --git a/Frontend/lib/mih_packages/calendar/app_tools/appointments.dart b/Frontend/lib/mih_packages/calendar/app_tools/appointments.dart index f7e28dbe..5173669f 100644 --- a/Frontend/lib/mih_packages/calendar/app_tools/appointments.dart +++ b/Frontend/lib/mih_packages/calendar/app_tools/appointments.dart @@ -4,6 +4,7 @@ import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_ 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_layout/mih_single_child_scroll.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_window.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_pop_up_messages/mih_error_message.dart'; @@ -243,7 +244,7 @@ class _PatientAccessRequestState extends State { Widget getBody() { return Stack( children: [ - SingleChildScrollView( + MihSingleChildScroll( child: Column( children: [ Text( diff --git a/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_business_profile.dart b/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_business_profile.dart index eda76b95..e0e7a644 100644 --- a/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_business_profile.dart +++ b/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_business_profile.dart @@ -6,6 +6,7 @@ import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_ import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_file_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_layout/mih_single_child_scroll.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.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_loading_circle.dart'; @@ -317,255 +318,246 @@ class _MihBusinessProfileState extends State { } Widget getBody() { - return ScrollConfiguration( - behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false), - child: SingleChildScrollView( - child: SafeArea( - child: KeyboardListener( - focusNode: _focusNode, - autofocus: true, - onKeyEvent: (event) async { - if (event is KeyDownEvent && - event.logicalKey == LogicalKeyboardKey.enter) { - //print(business_id); - submitForm(business_id); - } - }, - child: Column( - children: [ - Visibility( - visible: isFullAccess(), - child: Column( + return MihSingleChildScroll( + child: KeyboardListener( + focusNode: _focusNode, + autofocus: true, + onKeyEvent: (event) async { + if (event is KeyDownEvent && + event.logicalKey == LogicalKeyboardKey.enter) { + //print(business_id); + submitForm(business_id); + } + }, + child: Column( + children: [ + Visibility( + visible: isFullAccess(), + child: Column( + children: [ + const Text( + "Business Profile", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 25, + ), + ), + Divider( + color: + MzanziInnovationHub.of(context)?.theme.secondaryColor(), + ), + const SizedBox(height: 10.0), + MIHTextField( + controller: regController, + hintText: "Registration No.", + editable: true, + required: true, + ), + const SizedBox(height: 10.0), + MIHTextField( + controller: nameController, + hintText: "Business Name", + editable: true, + required: true, + ), + const SizedBox(height: 10.0), + MIHDropdownField( + controller: typeController, + hintText: "Business Type", + dropdownOptions: const ["Doctors Office", "Other"], + required: true, + editable: true, + enableSearch: false, + ), + const SizedBox(height: 10.0), + ValueListenableBuilder( + valueListenable: busType, + builder: + (BuildContext context, String value, Widget? child) { + return Visibility( + visible: value == "Doctors Office", + child: MIHTextField( + controller: practiceNoController, + hintText: "Practice Number", + editable: true, + required: true, + ), + ); + }, + ), + const SizedBox(height: 10.0), + MIHTextField( + controller: vatNoController, + hintText: "VAT Number", + editable: true, + required: true, + ), + const SizedBox(height: 10.0), + MIHTextField( + controller: contactController, + hintText: "Contact Number", + editable: true, + required: true, + ), + const SizedBox(height: 10.0), + MIHTextField( + controller: emailController, + hintText: "Email", + editable: true, + required: true, + ), + const SizedBox(height: 10.0), + MIHFileField( + controller: logonameController, + hintText: "Logo", + editable: false, + required: true, + onPressed: () async { + FilePickerResult? result = + await FilePicker.platform.pickFiles( + type: FileType.custom, + allowedExtensions: ['jpg', 'png', 'pdf'], + ); + if (result == null) return; + final selectedFile = result.files.first; + setState(() { + selectedLogo = selectedFile; + }); + setState(() { + logonameController.text = selectedFile.name; + }); + }, + ), + const SizedBox(height: 10.0), + Row( children: [ - const Text( - "Business Profile", - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 25, + Flexible( + child: MIHTextField( + controller: locationController, + hintText: "Location", + editable: false, + required: false, ), ), - Divider( - color: MzanziInnovationHub.of(context) - ?.theme - .secondaryColor(), - ), - const SizedBox(height: 10.0), - MIHTextField( - controller: regController, - hintText: "Registration No.", - editable: true, - required: true, - ), - const SizedBox(height: 10.0), - MIHTextField( - controller: nameController, - hintText: "Business Name", - editable: true, - required: true, - ), - const SizedBox(height: 10.0), - MIHDropdownField( - controller: typeController, - hintText: "Business Type", - dropdownOptions: const ["Doctors Office", "Other"], - required: true, - editable: true, - enableSearch: false, - ), - const SizedBox(height: 10.0), - ValueListenableBuilder( - valueListenable: busType, - builder: (BuildContext context, String value, - Widget? child) { - return Visibility( - visible: value == "Doctors Office", - child: MIHTextField( - controller: practiceNoController, - hintText: "Practice Number", - editable: true, - required: true, - ), - ); - }, - ), - const SizedBox(height: 10.0), - MIHTextField( - controller: vatNoController, - hintText: "VAT Number", - editable: true, - required: true, - ), - const SizedBox(height: 10.0), - MIHTextField( - controller: contactController, - hintText: "Contact Number", - editable: true, - required: true, - ), - const SizedBox(height: 10.0), - MIHTextField( - controller: emailController, - hintText: "Email", - editable: true, - required: true, - ), - const SizedBox(height: 10.0), - MIHFileField( - controller: logonameController, - hintText: "Logo", - editable: false, - required: true, - onPressed: () async { - FilePickerResult? result = - await FilePicker.platform.pickFiles( - type: FileType.custom, - allowedExtensions: ['jpg', 'png', 'pdf'], - ); - if (result == null) return; - final selectedFile = result.files.first; - setState(() { - selectedLogo = selectedFile; - }); - setState(() { - logonameController.text = selectedFile.name; - }); - }, - ), - const SizedBox(height: 10.0), - Row( - children: [ - Flexible( - child: MIHTextField( - controller: locationController, - hintText: "Location", - editable: false, - required: false, - ), - ), - const SizedBox(width: 10.0), - SizedBox( - width: 80.0, - height: 50.0, - child: MIHButton( - buttonText: "Set", - buttonColor: MzanziInnovationHub.of(context)! - .theme - .secondaryColor(), - textColor: MzanziInnovationHub.of(context)! - .theme - .primaryColor(), - onTap: () { - MIHLocationAPI() - .getGPSPosition(context) - .then((position) { - if (position != null) { - setState(() { - locationController.text = - "${position.latitude}, ${position.longitude}"; - }); - } + const SizedBox(width: 10.0), + SizedBox( + width: 80.0, + height: 50.0, + child: MIHButton( + buttonText: "Set", + buttonColor: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + onTap: () { + MIHLocationAPI() + .getGPSPosition(context) + .then((position) { + if (position != null) { + setState(() { + locationController.text = + "${position.latitude}, ${position.longitude}"; }); - }, - ), - ), - ], + } + }); + }, + ), ), - const SizedBox(height: 15.0), ], ), + const SizedBox(height: 15.0), + ], + ), + ), + Column( + children: [ + //const SizedBox(height: 15.0), + const Text( + "My Business User", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 25, + ), ), - Column( - children: [ - //const SizedBox(height: 15.0), - const Text( - "My Business User", - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 25, - ), - ), - Divider( - color: MzanziInnovationHub.of(context) - ?.theme - .secondaryColor(), - ), - const SizedBox(height: 10.0), - MIHDropdownField( - controller: titleController, - hintText: "Title", - dropdownOptions: const ["Doctor", "Assistant"], - required: true, - editable: true, - enableSearch: false, - ), - const SizedBox(height: 10.0), - MIHTextField( - controller: fnameController, - hintText: "Name", - editable: false, - required: true, - ), - const SizedBox(height: 10.0), - MIHTextField( - controller: lnameController, - hintText: "Surname", - editable: false, - required: true, - ), - const SizedBox(height: 10.0), - MIHFileField( - controller: signtureController, - hintText: "Signature", - editable: false, - required: true, - onPressed: () async { - FilePickerResult? result = - await FilePicker.platform.pickFiles( - type: FileType.custom, - allowedExtensions: ['jpg', 'png', 'pdf'], - ); - if (result == null) return; - final selectedFile = result.files.first; - setState(() { - selectedSignature = selectedFile; - }); - setState(() { - signtureController.text = selectedFile.name; - }); - }, - ), - const SizedBox(height: 15.0), - MIHDropdownField( - controller: accessController, - hintText: "Access", - dropdownOptions: const ["Full", "Partial"], - required: true, - editable: false, - enableSearch: false, - ), - const SizedBox(height: 30.0), - SizedBox( - width: 500.0, - height: 50.0, - child: MIHButton( - buttonText: "Update", - buttonColor: MzanziInnovationHub.of(context)! - .theme - .secondaryColor(), - textColor: MzanziInnovationHub.of(context)! - .theme - .primaryColor(), - onTap: () { - //print(business_id); - submitForm(business_id); - }, - ), - ), - ], + Divider( + color: + MzanziInnovationHub.of(context)?.theme.secondaryColor(), + ), + const SizedBox(height: 10.0), + MIHDropdownField( + controller: titleController, + hintText: "Title", + dropdownOptions: const ["Doctor", "Assistant"], + required: true, + editable: true, + enableSearch: false, + ), + const SizedBox(height: 10.0), + MIHTextField( + controller: fnameController, + hintText: "Name", + editable: false, + required: true, + ), + const SizedBox(height: 10.0), + MIHTextField( + controller: lnameController, + hintText: "Surname", + editable: false, + required: true, + ), + const SizedBox(height: 10.0), + MIHFileField( + controller: signtureController, + hintText: "Signature", + editable: false, + required: true, + onPressed: () async { + FilePickerResult? result = + await FilePicker.platform.pickFiles( + type: FileType.custom, + allowedExtensions: ['jpg', 'png', 'pdf'], + ); + if (result == null) return; + final selectedFile = result.files.first; + setState(() { + selectedSignature = selectedFile; + }); + setState(() { + signtureController.text = selectedFile.name; + }); + }, + ), + const SizedBox(height: 15.0), + MIHDropdownField( + controller: accessController, + hintText: "Access", + dropdownOptions: const ["Full", "Partial"], + required: true, + editable: false, + enableSearch: false, + ), + const SizedBox(height: 30.0), + SizedBox( + width: 500.0, + height: 50.0, + child: MIHButton( + buttonText: "Update", + buttonColor: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + textColor: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + onTap: () { + //print(business_id); + submitForm(business_id); + }, + ), ), ], ), - ), + ], ), ), ); diff --git a/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_business_user_search.dart b/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_business_user_search.dart index f99285f2..c8880353 100644 --- a/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_business_user_search.dart +++ b/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_business_user_search.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'package:Mzansi_Innovation_Hub/main.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_package/mih-app_tool_body.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_loading_circle.dart'; @@ -97,65 +98,69 @@ class _MihBusinessUserSearchState extends State { } Widget getBody() { - return KeyboardListener( - focusNode: _focusNode, - autofocus: true, - onKeyEvent: (event) async { - if (event is KeyDownEvent && - event.logicalKey == LogicalKeyboardKey.enter) { - submitUserForm(); - } - }, - child: Column(mainAxisSize: MainAxisSize.max, children: [ - const Text( - "User Search", - style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold), - ), - //spacer - Divider(color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - MIHSearchField( - controller: searchController, - hintText: "Username or Email Search", - required: true, - editable: true, - onTap: () { + return MihSingleChildScroll( + child: KeyboardListener( + focusNode: _focusNode, + autofocus: true, + onKeyEvent: (event) async { + if (event is KeyDownEvent && + event.logicalKey == LogicalKeyboardKey.enter) { submitUserForm(); - }, - ), - //spacer - const SizedBox(height: 10), - FutureBuilder( - future: userSearchResults, - builder: (context, snapshot) { - //print("patient Liust ${snapshot.data}"); - if (snapshot.connectionState == ConnectionState.waiting) { - return const Mihloadingcircle(); - } else if (snapshot.connectionState == ConnectionState.done && - snapshot.hasData) { - List patientsList; - if (userSearch == "") { - patientsList = []; + } + }, + child: Column(mainAxisSize: MainAxisSize.max, children: [ + const Text( + "User Search", + style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold), + ), + //spacer + Divider( + color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), + const SizedBox(height: 10), + MIHSearchField( + controller: searchController, + hintText: "Username or Email Search", + required: true, + editable: true, + onTap: () { + submitUserForm(); + }, + ), + //spacer + const SizedBox(height: 10), + FutureBuilder( + future: userSearchResults, + builder: (context, snapshot) { + //print("patient Liust ${snapshot.data}"); + if (snapshot.connectionState == ConnectionState.waiting) { + return const Mihloadingcircle(); + } else if (snapshot.connectionState == ConnectionState.done && + snapshot.hasData) { + List patientsList; + if (userSearch == "") { + patientsList = []; + } else { + patientsList = snapshot.data!; + //print(patientsList); + } + return displayUserList(patientsList); } else { - patientsList = snapshot.data!; - //print(patientsList); + return Center( + child: Text( + "$errorCode: Error pulling Patients Data\n/patients/search/$userSearch\n$errorBody", + style: TextStyle( + fontSize: 25, + color: MzanziInnovationHub.of(context)! + .theme + .errorColor()), + textAlign: TextAlign.center, + ), + ); } - return displayUserList(patientsList); - } else { - return Center( - child: Text( - "$errorCode: Error pulling Patients Data\n/patients/search/$userSearch\n$errorBody", - style: TextStyle( - fontSize: 25, - color: - MzanziInnovationHub.of(context)!.theme.errorColor()), - textAlign: TextAlign.center, - ), - ); - } - }, - ), - ]), + }, + ), + ]), + ), ); } } diff --git a/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_my_business_team.dart b/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_my_business_team.dart index 11b86bbf..7f903c92 100644 --- a/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_my_business_team.dart +++ b/Frontend/lib/mih_packages/mzansi_profile/business_profile/app_tools/mih_my_business_team.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:Mzansi_Innovation_Hub/main.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_single_child_scroll.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.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'; @@ -80,45 +81,48 @@ class _MihMyBusinessTeamState extends State { } Widget getBody() { - return Column(mainAxisSize: MainAxisSize.max, children: [ - const Text( - "Business Team", - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 25, + return MihSingleChildScroll( + child: Column(mainAxisSize: MainAxisSize.max, children: [ + const Text( + "Business Team", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 25, + ), ), - ), - Divider(color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - FutureBuilder( - future: employeeList, - builder: (context, snapshot) { - //print("patient Queue List ${snapshot.hasData}"); - if (snapshot.connectionState == ConnectionState.waiting) { - return const Mihloadingcircle(); - } else if (snapshot.connectionState == ConnectionState.done) { - //List employeeListResults; - // if (searchString == "") { - // patientQueueList = []; - // } else { + Divider(color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), + const SizedBox(height: 10), + FutureBuilder( + future: employeeList, + builder: (context, snapshot) { + //print("patient Queue List ${snapshot.hasData}"); + if (snapshot.connectionState == ConnectionState.waiting) { + return const Mihloadingcircle(); + } else if (snapshot.connectionState == ConnectionState.done) { + //List employeeListResults; + // if (searchString == "") { + // patientQueueList = []; + // } else { - // print(patientQueueList); - // } + // print(patientQueueList); + // } - return displayEmployeeList(snapshot.requireData); - } else { - return Center( - child: Text( - "$errorCode: Error pulling Patients Data\n${AppEnviroment.baseApiUrl}/business-user/users/${widget.arguments.businessUser!.business_id}\n$errorBody", - style: TextStyle( - fontSize: 25, - color: MzanziInnovationHub.of(context)!.theme.errorColor()), - textAlign: TextAlign.center, - ), - ); - } - }, - ), - ]); + return displayEmployeeList(snapshot.requireData); + } else { + return Center( + child: Text( + "$errorCode: Error pulling Patients Data\n${AppEnviroment.baseApiUrl}/business-user/users/${widget.arguments.businessUser!.business_id}\n$errorBody", + style: TextStyle( + fontSize: 25, + color: + MzanziInnovationHub.of(context)!.theme.errorColor()), + textAlign: TextAlign.center, + ), + ); + } + }, + ), + ]), + ); } } diff --git a/Frontend/lib/mih_packages/mzansi_profile/personal_profile/app_tools/mih_personal_profile.dart b/Frontend/lib/mih_packages/mzansi_profile/personal_profile/app_tools/mih_personal_profile.dart index 19f74581..2e9d9b83 100644 --- a/Frontend/lib/mih_packages/mzansi_profile/personal_profile/app_tools/mih_personal_profile.dart +++ b/Frontend/lib/mih_packages/mzansi_profile/personal_profile/app_tools/mih_personal_profile.dart @@ -4,6 +4,7 @@ import 'package:Mzansi_Innovation_Hub/main.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_button.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_file_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_layout/mih_single_child_scroll.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.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_loading_circle.dart'; @@ -245,117 +246,119 @@ class _MihPersonalProfileState extends State { } Widget getBody() { - return Column( - children: [ - //displayProPic(), - MIHProfilePicture( - profilePictureFile: widget.arguments.propicFile, - proPicController: proPicController, - proPic: proPic, - width: 155, - radius: 70, - drawerMode: false, - editable: true, - onChange: (newProPic) { - setState(() { - proPic = newProPic; - }); - }, - ), - const SizedBox(height: 25.0), - Visibility( - visible: false, - child: MIHFileField( - controller: proPicController, - hintText: "Profile Picture", - editable: false, - required: false, - onPressed: () async { - FilePickerResult? result = await FilePicker.platform.pickFiles( - type: FileType.custom, - allowedExtensions: ['jpg', 'png'], - ); - if (result == null) return; - final selectedFile = result.files.first; + return MihSingleChildScroll( + child: Column( + children: [ + //displayProPic(), + MIHProfilePicture( + profilePictureFile: widget.arguments.propicFile, + proPicController: proPicController, + proPic: proPic, + width: 155, + radius: 70, + drawerMode: false, + editable: true, + onChange: (newProPic) { setState(() { - proPic = selectedFile; - propicPreview = MemoryImage(proPic!.bytes!); - }); - - setState(() { - proPicController.text = selectedFile.name; + proPic = newProPic; }); }, ), - ), - // const SizedBox(height: 10.0), - // MIHTextField( - // controller: proPicController, - // hintText: "Pro Pic", - // editable: true, - // required: true, - // ), - const SizedBox(height: 10.0), - MIHTextField( - controller: usernameController, - hintText: "Username", - editable: true, - required: true, - ), - const SizedBox(height: 10.0), - MIHTextField( - controller: fnameController, - hintText: "First Name", - editable: true, - required: true, - ), - const SizedBox(height: 10.0), - MIHTextField( - controller: lnameController, - hintText: "Last Name", - editable: true, - required: true, - ), - const SizedBox(height: 10.0), - Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - const Text( - "Activate Business Account", - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 20, - ), - ), - const SizedBox( - width: 10, - ), - Switch( - value: businessUser, - onChanged: (bool value) { + const SizedBox(height: 25.0), + Visibility( + visible: false, + child: MIHFileField( + controller: proPicController, + hintText: "Profile Picture", + editable: false, + required: false, + onPressed: () async { + FilePickerResult? result = await FilePicker.platform.pickFiles( + type: FileType.custom, + allowedExtensions: ['jpg', 'png'], + ); + if (result == null) return; + final selectedFile = result.files.first; setState(() { - businessUser = value; + proPic = selectedFile; + propicPreview = MemoryImage(proPic!.bytes!); + }); + + setState(() { + proPicController.text = selectedFile.name; }); }, ), - ], - ), - const SizedBox(height: 30.0), - SizedBox( - width: 500.0, - height: 50.0, - child: MIHButton( - buttonText: "Update", - buttonColor: - MzanziInnovationHub.of(context)!.theme.secondaryColor(), - textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), - onTap: () { - submitForm(); - }, ), - ), - ], + // const SizedBox(height: 10.0), + // MIHTextField( + // controller: proPicController, + // hintText: "Pro Pic", + // editable: true, + // required: true, + // ), + const SizedBox(height: 10.0), + MIHTextField( + controller: usernameController, + hintText: "Username", + editable: true, + required: true, + ), + const SizedBox(height: 10.0), + MIHTextField( + controller: fnameController, + hintText: "First Name", + editable: true, + required: true, + ), + const SizedBox(height: 10.0), + MIHTextField( + controller: lnameController, + hintText: "Last Name", + editable: true, + required: true, + ), + const SizedBox(height: 10.0), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Text( + "Activate Business Account", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 20, + ), + ), + const SizedBox( + width: 10, + ), + Switch( + value: businessUser, + onChanged: (bool value) { + setState(() { + businessUser = value; + }); + }, + ), + ], + ), + const SizedBox(height: 30.0), + SizedBox( + width: 500.0, + height: 50.0, + child: MIHButton( + buttonText: "Update", + buttonColor: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + onTap: () { + submitForm(); + }, + ), + ), + ], + ), ); } } diff --git a/Frontend/lib/mih_packages/mzansi_wallet/app_tools/mih_cards.dart b/Frontend/lib/mih_packages/mzansi_wallet/app_tools/mih_cards.dart index c3a1c6be..5f920fe9 100644 --- a/Frontend/lib/mih_packages/mzansi_wallet/app_tools/mih_cards.dart +++ b/Frontend/lib/mih_packages/mzansi_wallet/app_tools/mih_cards.dart @@ -4,6 +4,7 @@ import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_ import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_number_input.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_window.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_pop_up_messages/mih_error_message.dart'; @@ -233,7 +234,7 @@ class _MihCardsState extends State { Widget getBody() { return Stack( children: [ - SingleChildScrollView( + MihSingleChildScroll( child: Column( children: [ Row( diff --git a/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/mih_patient_search.dart b/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/mih_patient_search.dart index c44c5018..684d9181 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/mih_patient_search.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/mih_patient_search.dart @@ -1,6 +1,7 @@ import 'package:Mzansi_Innovation_Hub/main.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_package/mih-app_tool_body.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'; @@ -39,19 +40,19 @@ class _MihPatientSearchState extends State { late Future> _mihPatientSearchResults; Widget getPatientSearch() { - return KeyboardListener( - focusNode: _focusNode, - autofocus: true, - onKeyEvent: (event) async { - if (event is KeyDownEvent && - event.logicalKey == LogicalKeyboardKey.enter) { - // submitPatientForm(); - submitPatientSearch(); - //To-Do: Implement the search function - // print("To-Do: Implement the search function"); - } - }, - child: SingleChildScrollView( + return MihSingleChildScroll( + child: KeyboardListener( + focusNode: _focusNode, + autofocus: true, + onKeyEvent: (event) async { + if (event is KeyDownEvent && + event.logicalKey == LogicalKeyboardKey.enter) { + // submitPatientForm(); + submitPatientSearch(); + //To-Do: Implement the search function + // print("To-Do: Implement the search function"); + } + }, child: Column(mainAxisSize: MainAxisSize.max, children: [ const Text( "MIH Patient Lookup", diff --git a/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/my_patient_list.dart b/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/my_patient_list.dart index a6ce5509..56904e1d 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/my_patient_list.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/my_patient_list.dart @@ -1,6 +1,7 @@ import 'package:Mzansi_Innovation_Hub/main.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_package/mih-app_tool_body.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'; @@ -39,20 +40,20 @@ class _MyPatientListState extends State { final FocusNode _focusNode = FocusNode(); Widget myPatientListTool() { - return KeyboardListener( - focusNode: _focusNode, - autofocus: true, - onKeyEvent: (event) async { - if (event is KeyDownEvent && - event.logicalKey == LogicalKeyboardKey.enter) { - setState(() { - _myPatientIdSearchString = _myPatientSearchController.text; - _myPatientList = MIHApiCalls.getPatientAccessListOfBusiness( - widget.business!.business_id); - }); - } - }, - child: SingleChildScrollView( + return MihSingleChildScroll( + child: KeyboardListener( + focusNode: _focusNode, + autofocus: true, + onKeyEvent: (event) async { + if (event is KeyDownEvent && + event.logicalKey == LogicalKeyboardKey.enter) { + setState(() { + _myPatientIdSearchString = _myPatientSearchController.text; + _myPatientList = MIHApiCalls.getPatientAccessListOfBusiness( + widget.business!.business_id); + }); + } + }, child: Column(mainAxisSize: MainAxisSize.max, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, diff --git a/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/waiting_room.dart b/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/waiting_room.dart index 26f27d27..e7ff178b 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/waiting_room.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_manager/app_tools/waiting_room.dart @@ -6,6 +6,7 @@ import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_ 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_layout/mih_single_child_scroll.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_window.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_pop_up_messages/mih_error_message.dart'; @@ -61,7 +62,7 @@ class _WaitingRoomState extends State { Widget getBusinessAppointmentsTool() { return Stack( children: [ - SingleChildScrollView( + MihSingleChildScroll( child: Column( children: [ const Text(