Merge pull request #182 from yaso-meth/QoL--Package-window-Component-update

QoL--Package-window-Component-update
This commit is contained in:
yaso-meth
2025-05-28 13:40:56 +02:00
committed by GitHub
86 changed files with 3006 additions and 3530 deletions

View File

@@ -1,7 +1,7 @@
import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_yt_video_player.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_yt_video_player.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../main.dart';
import 'mih_window.dart';
class MIHTile extends StatefulWidget { class MIHTile extends StatefulWidget {
final String tileName; final String tileName;
@@ -47,16 +47,17 @@ class _MIHTileState extends State<MIHTile> {
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: widget.tileName, windowTitle: widget.tileName,
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHYTVideoPlayer(videoYTLink: widget.videoID!), children: [
], MIHYTVideoPlayer(videoYTLink: widget.videoID!),
],
),
); );
}, },
); );

View File

@@ -1,214 +0,0 @@
import 'package:flutter/material.dart';
import '../../main.dart';
class MIHWindow extends StatefulWidget {
final String windowTitle;
final List<Widget> windowBody;
final List<Widget> windowTools;
final void Function() onWindowTapClose;
final bool fullscreen;
const MIHWindow({
super.key,
required this.fullscreen,
required this.windowTitle,
required this.windowTools,
required this.onWindowTapClose,
required this.windowBody,
});
@override
State<MIHWindow> createState() => _MIHWindowState();
}
class _MIHWindowState extends State<MIHWindow> {
late double windowTitleSize;
late double horizontralWindowPadding;
late double vertticalWindowPadding;
late double windowWidth;
late double windowHeight;
late double width;
late double height;
void checkScreenSize() {
// print("screen width: $width");
// print("screen height: $height");
if (MzanziInnovationHub.of(context)!.theme.screenType == "desktop") {
setState(() {
windowTitleSize = 25;
horizontralWindowPadding = width / 7;
vertticalWindowPadding = 25;
windowWidth = width;
windowHeight = height;
});
} else {
setState(() {
windowTitleSize = 20;
horizontralWindowPadding = 10;
vertticalWindowPadding = 10;
windowWidth = width;
windowHeight = height;
});
}
}
Widget getWidnowClose() {
return Container(
alignment: Alignment.centerRight,
child: IconButton(
onPressed: widget.onWindowTapClose,
icon: Icon(
Icons.close,
color: MzanziInnovationHub.of(context)!.theme.errorColor(),
size: 35,
),
),
);
}
Widget getWidnowTools() {
return Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: widget.windowTools,
);
}
Widget getWidnowTitle() {
return Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
Expanded(
child: Text(
widget.windowTitle,
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
fontSize: windowTitleSize,
fontWeight: FontWeight.bold,
),
),
),
],
);
}
Widget getWidnowHeader() {
return Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: [
getWidnowTools(),
Expanded(
flex: 2,
child: getWidnowTitle(),
),
getWidnowClose(),
],
);
}
Widget getWidnowBody() {
if (widget.fullscreen) {
return Expanded(
child: Padding(
padding: const EdgeInsets.all(10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: widget.windowBody,
),
),
);
} else {
return Padding(
padding: const EdgeInsets.all(10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: widget.windowBody,
),
);
}
}
Widget createWindow(Widget header, Widget body) {
Widget visibleItems;
if (widget.fullscreen) {
visibleItems = Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
header,
//const Divider(),
body,
],
);
} else {
visibleItems = SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
header,
//const Divider(),
body,
],
),
);
}
return Dialog(
insetPadding: EdgeInsets.symmetric(
horizontal: horizontralWindowPadding,
vertical: vertticalWindowPadding,
),
insetAnimationCurve: Easing.emphasizedDecelerate,
insetAnimationDuration: Durations.short1,
child: Container(
//padding: const EdgeInsets.all(10),
width: windowWidth,
//height: windowHeight,
decoration: BoxDecoration(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
borderRadius: BorderRadius.circular(25.0),
border: Border.all(
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
width: 5.0),
),
child: visibleItems,
),
);
}
@override
void dispose() {
super.dispose();
}
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
var size = MediaQuery.of(context).size;
setState(() {
width = size.width;
height = size.height;
});
checkScreenSize();
return createWindow(
getWidnowHeader(),
getWidnowBody(),
);
}
}

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_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_alert.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/Example/package_tools/package_tool_one.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/Example/package_tools/package_tool_one.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/Example/package_tools/package_tool_two.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/Example/package_tools/package_tool_two.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
@@ -18,8 +18,8 @@ class PackageTest extends StatefulWidget {
class _PackageTestState extends State<PackageTest> { class _PackageTestState extends State<PackageTest> {
int _selcetedIndex = 0; int _selcetedIndex = 0;
MihAppAction getAction() { MihPackageAction getAction() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -32,7 +32,7 @@ class _PackageTestState extends State<PackageTest> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = Map(); Map<Widget, void Function()?> temp = Map();
temp[const Icon(Icons.inbox)] = () { temp[const Icon(Icons.inbox)] = () {
setState(() { setState(() {
@@ -44,7 +44,7 @@ class _PackageTestState extends State<PackageTest> {
_selcetedIndex = 1; _selcetedIndex = 1;
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );
@@ -54,7 +54,7 @@ class _PackageTestState extends State<PackageTest> {
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return MihAppAlert( return MihPackageAlert(
alertIcon: Icon( alertIcon: Icon(
Icons.warning_amber_rounded, Icons.warning_amber_rounded,
size: 100, size: 100,
@@ -119,7 +119,7 @@ class _PackageTestState extends State<PackageTest> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),

View File

@@ -4,8 +4,8 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.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_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_layout/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_app_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
@@ -29,7 +29,7 @@ class _PackageToolOneState extends State<PackageToolOne> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MihAppWindow( return MihPackageWindow(
fullscreen: true, fullscreen: true,
windowTitle: "Test Full", windowTitle: "Test Full",
onWindowTapClose: () { onWindowTapClose: () {
@@ -46,9 +46,29 @@ class _PackageToolOneState extends State<PackageToolOne> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MihAppWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Test No Full", windowTitle: "Test No Full",
menuOptions: [
SpeedDialChild(
child: Icon(
Icons.add,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Show New Window",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
// showTestWindow();
},
),
],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
@@ -71,7 +91,7 @@ class _PackageToolOneState extends State<PackageToolOne> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/main.dart'; 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_layout/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
class PackageToolTwo extends StatefulWidget { class PackageToolTwo extends StatefulWidget {
@@ -14,7 +14,7 @@ class PackageToolTwo extends StatefulWidget {
class _PackageToolTwoState extends State<PackageToolTwo> { class _PackageToolTwoState extends State<PackageToolTwo> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: false, borderOn: false,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -1,183 +0,0 @@
import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_single_child_scroll.dart';
class MihAppWindow extends StatefulWidget {
final String windowTitle;
final Widget windowBody;
final Widget? windowTools;
// final List<SpeedDialChild> menuOptions;
final void Function() onWindowTapClose;
final bool fullscreen;
const MihAppWindow({
super.key,
required this.fullscreen,
required this.windowTitle,
this.windowTools,
// required this.menuOptions,
required this.onWindowTapClose,
required this.windowBody,
});
@override
State<MihAppWindow> createState() => _MihAppWindowState();
}
class _MihAppWindowState extends State<MihAppWindow> {
late double windowTitleSize;
late double horizontralWindowPadding;
late double vertticalWindowPadding;
late double windowWidth;
late double windowHeight;
late double width;
late double height;
void checkScreenSize() {
// print("screen width: $width");
// print("screen height: $height");
if (MzanziInnovationHub.of(context)!.theme.screenType == "desktop") {
setState(() {
windowTitleSize = 25;
horizontralWindowPadding = width / 7;
vertticalWindowPadding = 25;
windowWidth = width;
windowHeight = height;
});
} else {
setState(() {
windowTitleSize = 20;
horizontralWindowPadding = 10;
vertticalWindowPadding = 10;
windowWidth = width;
windowHeight = height;
});
}
}
Widget getWindowHeader() {
return Container(
// color: Colors.green,
alignment: Alignment.center,
height: 50,
child: Row(
children: [
Container(
// color: Colors.white,
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(25), // Optional: rounds the corners
boxShadow: const [
BoxShadow(
color: Color.fromARGB(
60, 0, 0, 0), // 0.2 opacity = 51 in alpha (255 * 0.2)
spreadRadius: -5,
blurRadius: 5,
offset: Offset(0, 5),
),
],
),
child: IconButton.filled(
style: ButtonStyle(
backgroundColor: WidgetStateProperty.all<Color>(
MzanziInnovationHub.of(context)!.theme.errorColor()),
),
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
iconSize: 20,
onPressed: () {
widget.onWindowTapClose();
},
icon: const Icon(
Icons.close,
),
),
),
Expanded(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 15),
// color: Colors.pink,
child: Text(
widget.windowTitle,
textAlign: TextAlign.left,
style: TextStyle(
fontSize: windowTitleSize,
fontWeight: FontWeight.bold,
color:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
),
),
widget.windowTools != null ? widget.windowTools! : Container(),
],
),
);
}
@override
void dispose() {
super.dispose();
}
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
var size = MediaQuery.of(context).size;
setState(() {
width = size.width;
height = size.height;
});
checkScreenSize();
return Dialog(
insetPadding: EdgeInsets.symmetric(
horizontal: horizontralWindowPadding,
vertical: vertticalWindowPadding,
),
insetAnimationCurve: Easing.emphasizedDecelerate,
insetAnimationDuration: Durations.short1,
child: Container(
decoration: BoxDecoration(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
borderRadius: BorderRadius.circular(25.0),
border: Border.all(
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
width: 5.0),
),
child: widget.fullscreen
? Column(
mainAxisSize: MainAxisSize.max,
children: [
getWindowHeader(),
Expanded(
child: SingleChildScrollView(child: widget.windowBody)),
],
)
: Column(
mainAxisSize: MainAxisSize.min,
children: [
getWindowHeader(),
Flexible(
child: Padding(
padding: EdgeInsets.only(
left: 25,
right: 25,
bottom: vertticalWindowPadding,
),
child: ConstrainedBox(
constraints: BoxConstraints(
maxHeight: windowHeight * 0.85,
maxWidth: windowWidth * 0.85,
),
child: MihSingleChildScroll(
child: widget.windowBody))),
),
],
),
),
);
}
}

View File

@@ -4,12 +4,14 @@ import 'package:mzansi_innovation_hub/main.dart';
class MihFloatingMenu extends StatefulWidget { class MihFloatingMenu extends StatefulWidget {
final IconData? icon; final IconData? icon;
final double? iconSize;
final AnimatedIconData? animatedIcon; final AnimatedIconData? animatedIcon;
final SpeedDialDirection? direction; final SpeedDialDirection? direction;
final List<SpeedDialChild> children; final List<SpeedDialChild> children;
const MihFloatingMenu({ const MihFloatingMenu({
super.key, super.key,
this.icon, this.icon,
this.iconSize,
this.animatedIcon, this.animatedIcon,
this.direction, this.direction,
required this.children, required this.children,
@@ -22,26 +24,21 @@ class MihFloatingMenu extends StatefulWidget {
class _MihFloatingMenuState extends State<MihFloatingMenu> { class _MihFloatingMenuState extends State<MihFloatingMenu> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return SpeedDial(
padding: const EdgeInsets.only( icon: widget.icon,
right: 5.0, buttonSize: Size(widget.iconSize ?? 56.0, widget.iconSize ?? 56.0),
bottom: 5.0, animatedIcon: widget.animatedIcon,
), direction: widget.direction ?? SpeedDialDirection.up,
child: SpeedDial( activeIcon: Icons.close,
icon: widget.icon, backgroundColor: MzanziInnovationHub.of(context)!.theme.successColor(),
animatedIcon: widget.animatedIcon, activeBackgroundColor:
direction: widget.direction ?? SpeedDialDirection.up, MzanziInnovationHub.of(context)!.theme.errorColor(),
activeIcon: Icons.close, foregroundColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
backgroundColor: MzanziInnovationHub.of(context)!.theme.successColor(), overlayColor: Colors.black,
activeBackgroundColor: overlayOpacity: 0.5,
MzanziInnovationHub.of(context)!.theme.errorColor(), children: widget.children,
foregroundColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), onOpen: () => debugPrint('OPENING DIAL'),
overlayColor: Colors.black, onClose: () => debugPrint('DIAL CLOSED'),
overlayOpacity: 0.5,
children: widget.children,
onOpen: () => debugPrint('OPENING DIAL'),
onClose: () => debugPrint('DIAL CLOSED'),
),
); );
} }
} }

View File

@@ -1,18 +1,18 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_packages/mih_home/components/mih_app_drawer.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_home/components/mih_app_drawer.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
// import 'package:flutter_swipe_detector/flutter_swipe_detector.dart'; // import 'package:flutter_swipe_detector/flutter_swipe_detector.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class MihApp extends StatefulWidget { class MihPackage extends StatefulWidget {
final Widget appActionButton; final Widget appActionButton;
final MihAppTools appTools; final MihPackageTools appTools;
final List<Widget> appBody; final List<Widget> appBody;
final MIHAppDrawer? actionDrawer; final MIHAppDrawer? actionDrawer;
int selectedbodyIndex; int selectedbodyIndex;
final Function(int) onIndexChange; final Function(int) onIndexChange;
MihApp({ MihPackage({
super.key, super.key,
required this.appActionButton, required this.appActionButton,
required this.appTools, required this.appTools,
@@ -23,10 +23,11 @@ class MihApp extends StatefulWidget {
}); });
@override @override
State<MihApp> createState() => _MihAppState(); State<MihPackage> createState() => _MihPackageState();
} }
class _MihAppState extends State<MihApp> with SingleTickerProviderStateMixin { class _MihPackageState extends State<MihPackage>
with SingleTickerProviderStateMixin {
late PageController _pageController; late PageController _pageController;
late AnimationController _animationController; late AnimationController _animationController;
@@ -65,7 +66,7 @@ class _MihAppState extends State<MihApp> with SingleTickerProviderStateMixin {
} }
@override @override
void didUpdateWidget(covariant MihApp oldWidget) { void didUpdateWidget(covariant MihPackage oldWidget) {
super.didUpdateWidget(oldWidget); super.didUpdateWidget(oldWidget);
if (oldWidget.selectedbodyIndex != widget.selectedbodyIndex) { if (oldWidget.selectedbodyIndex != widget.selectedbodyIndex) {
_pageController.animateToPage( _pageController.animateToPage(

View File

@@ -1,10 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class MihAppAction extends StatefulWidget { class MihPackageAction extends StatefulWidget {
final void Function()? onTap; final void Function()? onTap;
final double iconSize; final double iconSize;
final Widget icon; final Widget icon;
const MihAppAction({ const MihPackageAction({
super.key, super.key,
required this.icon, required this.icon,
required this.iconSize, required this.iconSize,
@@ -12,10 +12,10 @@ class MihAppAction extends StatefulWidget {
}); });
@override @override
State<MihAppAction> createState() => _MihAppActionState(); State<MihPackageAction> createState() => _MihPackageActionState();
} }
class _MihAppActionState extends State<MihAppAction> { class _MihPackageActionState extends State<MihPackageAction> {
@override @override
void dispose() { void dispose() {
super.dispose(); super.dispose();

View File

@@ -1,12 +1,12 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class MihAppAlert extends StatefulWidget { class MihPackageAlert extends StatefulWidget {
final Widget alertIcon; final Widget alertIcon;
final String alertTitle; final String alertTitle;
final Widget alertBody; final Widget alertBody;
final Color alertColour; final Color alertColour;
const MihAppAlert({ const MihPackageAlert({
super.key, super.key,
required this.alertIcon, required this.alertIcon,
required this.alertTitle, required this.alertTitle,
@@ -15,10 +15,10 @@ class MihAppAlert extends StatefulWidget {
}); });
@override @override
State<MihAppAlert> createState() => _MihAppAlertState(); State<MihPackageAlert> createState() => _MihPackageAlertState();
} }
class _MihAppAlertState extends State<MihAppAlert> { class _MihPackageAlertState extends State<MihPackageAlert> {
late double popUpWidth; late double popUpWidth;
late double? popUpheight; late double? popUpheight;
late double popUpTitleSize; late double popUpTitleSize;

View File

@@ -1,9 +1,9 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_yt_video_player.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_yt_video_player.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class MihAppTile extends StatefulWidget { class MihPackageTile extends StatefulWidget {
final String appName; final String appName;
final String? ytVideoID; final String? ytVideoID;
final Widget appIcon; final Widget appIcon;
@@ -11,7 +11,7 @@ class MihAppTile extends StatefulWidget {
final double iconSize; final double iconSize;
final Color primaryColor; final Color primaryColor;
final Color secondaryColor; final Color secondaryColor;
const MihAppTile({ const MihPackageTile({
super.key, super.key,
required this.onTap, required this.onTap,
required this.appName, required this.appName,
@@ -23,16 +23,16 @@ class MihAppTile extends StatefulWidget {
}); });
@override @override
State<MihAppTile> createState() => _MihAppTileState(); State<MihPackageTile> createState() => _MihPackageTileState();
} }
class _MihAppTileState extends State<MihAppTile> { class _MihPackageTileState extends State<MihPackageTile> {
void displayHint() { void displayHint() {
if (widget.ytVideoID != null) { if (widget.ytVideoID != null) {
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return MihAppWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: widget.appName, windowTitle: widget.appName,
// windowTools: const [], // windowTools: const [],

View File

@@ -1,20 +1,20 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class MihAppToolBody extends StatefulWidget { class MihPackageToolBody extends StatefulWidget {
final bool borderOn; final bool borderOn;
final Widget bodyItem; final Widget bodyItem;
const MihAppToolBody({ const MihPackageToolBody({
super.key, super.key,
required this.borderOn, required this.borderOn,
required this.bodyItem, required this.bodyItem,
}); });
@override @override
State<MihAppToolBody> createState() => _MihAppToolBodyState(); State<MihPackageToolBody> createState() => _MihPackageToolBodyState();
} }
class _MihAppToolBodyState extends State<MihAppToolBody> { class _MihPackageToolBodyState extends State<MihPackageToolBody> {
late double _innerBodyPadding; late double _innerBodyPadding;
double getHorizontalPaddingSize(Size screenSize) { double getHorizontalPaddingSize(Size screenSize) {
if (MzanziInnovationHub.of(context)!.theme.screenType == "desktop") { if (MzanziInnovationHub.of(context)!.theme.screenType == "desktop") {

View File

@@ -1,20 +1,20 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class MihAppTools extends StatefulWidget { class MihPackageTools extends StatefulWidget {
final Map<Widget, void Function()?> tools; final Map<Widget, void Function()?> tools;
int selcetedIndex; int selcetedIndex;
MihAppTools({ MihPackageTools({
super.key, super.key,
required this.tools, required this.tools,
required this.selcetedIndex, required this.selcetedIndex,
}); });
@override @override
State<MihAppTools> createState() => _MihAppToolsState(); State<MihPackageTools> createState() => _MihPackageToolsState();
} }
class _MihAppToolsState extends State<MihAppTools> { class _MihPackageToolsState extends State<MihPackageTools> {
List<Widget> getTools() { List<Widget> getTools() {
List<Widget> temp = []; List<Widget> temp = [];
int index = 0; int index = 0;

View File

@@ -0,0 +1,210 @@
import 'package:flutter/material.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
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_components/mih_floating_menu.dart';
class MihPackageWindow extends StatefulWidget {
final String windowTitle;
final Widget windowBody;
final List<SpeedDialChild>? menuOptions;
final void Function() onWindowTapClose;
final bool fullscreen;
const MihPackageWindow({
super.key,
required this.fullscreen,
required this.windowTitle,
this.menuOptions,
required this.onWindowTapClose,
required this.windowBody,
});
@override
State<MihPackageWindow> createState() => _MihPackageWindowState();
}
class _MihPackageWindowState extends State<MihPackageWindow> {
late double windowTitleSize;
late double horizontralWindowPadding;
late double vertticalWindowPadding;
late double windowWidth;
late double windowHeight;
late double width;
late double height;
void checkScreenSize() {
// print("screen width: $width");
// print("screen height: $height");
if (MzanziInnovationHub.of(context)!.theme.screenType == "desktop") {
setState(() {
windowTitleSize = 25;
horizontralWindowPadding = width / 7;
vertticalWindowPadding = 25;
windowWidth = width;
windowHeight = height;
});
} else {
setState(() {
windowTitleSize = 20;
horizontralWindowPadding = 10;
vertticalWindowPadding = 10;
windowWidth = width;
windowHeight = height;
});
}
}
Widget getHeader() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
// color: Colors.white,
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(25), // Optional: rounds the corners
boxShadow: const [
BoxShadow(
color: Color.fromARGB(
60, 0, 0, 0), // 0.2 opacity = 51 in alpha (255 * 0.2)
spreadRadius: -2,
blurRadius: 10,
offset: Offset(0, 5),
),
],
),
child: Padding(
padding: const EdgeInsets.only(
top: 2.0,
left: 5.0,
),
child: SizedBox(
width: 40,
child: IconButton.filled(
style: ButtonStyle(
backgroundColor: WidgetStateProperty.all<Color>(
MzanziInnovationHub.of(context)!.theme.errorColor()),
),
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
iconSize: 20,
onPressed: () {
widget.onWindowTapClose();
},
icon: const Icon(
Icons.close,
),
),
),
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Text(
widget.windowTitle,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: windowTitleSize,
fontWeight: FontWeight.bold,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
),
),
Visibility(
visible: (widget.menuOptions?.isNotEmpty ?? false),
child: Padding(
padding: const EdgeInsets.only(
top: 2.0,
right: 5.0,
),
child: SizedBox(
width: 40,
child: MihFloatingMenu(
iconSize: 40,
animatedIcon: AnimatedIcons.menu_close,
direction: SpeedDialDirection.down,
children: widget.menuOptions != null ? widget.menuOptions! : [],
),
),
),
),
// If no menu, add a SizedBox to keep alignment
if (!(widget.menuOptions?.isNotEmpty ?? false))
const SizedBox(width: 40),
],
);
}
@override
void dispose() {
super.dispose();
}
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
var size = MediaQuery.of(context).size;
setState(() {
width = size.width;
height = size.height;
});
checkScreenSize();
return Dialog(
insetPadding: EdgeInsets.symmetric(
horizontal: horizontralWindowPadding,
vertical: vertticalWindowPadding,
),
insetAnimationCurve: Easing.emphasizedDecelerate,
insetAnimationDuration: Durations.short1,
child: Container(
decoration: BoxDecoration(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
borderRadius: BorderRadius.circular(25.0),
border: Border.all(
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
width: 5.0),
),
child: widget.fullscreen
? Column(
mainAxisSize: MainAxisSize.max,
children: [
getHeader(),
const SizedBox(height: 5),
Expanded(
child: SingleChildScrollView(child: widget.windowBody)),
],
)
: Column(
mainAxisSize: MainAxisSize.min,
children: [
getHeader(),
const SizedBox(height: 5),
Flexible(
child: Padding(
padding: EdgeInsets.only(
left: 25,
right: 25,
bottom: vertticalWindowPadding,
),
child: ConstrainedBox(
constraints: BoxConstraints(
maxHeight: windowHeight * 0.85,
maxWidth: windowWidth * 0.85,
),
child: MihSingleChildScroll(child: widget.windowBody),
),
),
),
],
),
),
);
}
}

View File

@@ -1,6 +1,6 @@
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tools/mih_%20attributes.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tools/mih_%20attributes.dart';
import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tools/mih_info.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tools/mih_info.dart';
import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tools/mih_privacy_policy.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tools/mih_privacy_policy.dart';
@@ -31,7 +31,7 @@ class _AboutMihState extends State<AboutMih> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),
@@ -45,8 +45,8 @@ class _AboutMihState extends State<AboutMih> {
); );
} }
MihAppAction getAction() { MihPackageAction getAction() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -56,7 +56,7 @@ class _AboutMihState extends State<AboutMih> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.info)] = () { temp[const Icon(Icons.info)] = () {
setState(() { setState(() {
@@ -78,7 +78,7 @@ class _AboutMihState extends State<AboutMih> {
_selcetedIndex = 3; _selcetedIndex = 3;
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
@@ -17,7 +17,7 @@ class AboutMihTile extends StatefulWidget {
class _AboutMihTileState extends State<AboutMihTile> { class _AboutMihTileState extends State<AboutMihTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/about', '/about',

View File

@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/main.dart'; 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_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_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
@@ -83,7 +83,7 @@ class _MihAttributesState extends State<MihAttributes> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -3,7 +3,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_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_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@@ -87,7 +87,7 @@ class _MihInfoState extends State<MihInfo> {
// context: context, // context: context,
// barrierDismissible: false, // barrierDismissible: false,
// builder: (context) { // builder: (context) {
// return MihAppWindow( // return MihPackageWindow(
// fullscreen: false, // fullscreen: false,
// windowTitle: "MIH Installation Guide (iOS)", // windowTitle: "MIH Installation Guide (iOS)",
// windowTools: const [], // windowTools: const [],
@@ -634,7 +634,7 @@ class _MihInfoState extends State<MihInfo> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -1,5 +1,5 @@
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-app_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -8,7 +8,7 @@ class MihPrivacyPolicy extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(context), bodyItem: getBody(context),
); );

View File

@@ -1,5 +1,5 @@
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-app_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -8,7 +8,7 @@ class MIHTermsOfService extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(context), bodyItem: getBody(context),
); );

View File

@@ -1,18 +1,17 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
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_package_components/mih_package_window.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_success_message.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_warning_message.dart';
import 'package:mzansi_innovation_hub/mih_env/env.dart';
import 'package:mzansi_innovation_hub/mih_objects/access_request.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:supertokens_flutter/http.dart' as http; import 'package:supertokens_flutter/http.dart' as http;
import '../../../main.dart';
import '../../../mih_components/mih_inputs_and_buttons/mih_button.dart';
import '../../../mih_components/mih_layout/mih_window.dart';
import '../../../mih_components/mih_pop_up_messages/mih_error_message.dart';
import '../../../mih_components/mih_pop_up_messages/mih_success_message.dart';
import '../../../mih_components/mih_pop_up_messages/mih_warning_message.dart';
import '../../../mih_env/env.dart';
import '../../../mih_objects/access_request.dart';
import '../../../mih_objects/app_user.dart';
class BuildAccessRequestList extends StatefulWidget { class BuildAccessRequestList extends StatefulWidget {
final List<AccessRequest> accessRequests; final List<AccessRequest> accessRequests;
final AppUser signedInUser; final AppUser signedInUser;
@@ -220,65 +219,66 @@ class _BuildPatientsListState extends State<BuildAccessRequestList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Update Appointment Access", windowTitle: "Update Appointment Access",
windowBody: [ windowBody: Column(
const SizedBox( children: [
height: 10, const SizedBox(
), height: 10,
Padding( ),
padding: const EdgeInsets.symmetric(horizontal: 10.0), Padding(
child: Text( padding: const EdgeInsets.symmetric(horizontal: 10.0),
subtitle, child: Text(
textAlign: TextAlign.left, subtitle,
style: TextStyle( textAlign: TextAlign.left,
color: style: TextStyle(
MzanziInnovationHub.of(context)!.theme.secondaryColor(), color:
fontSize: popUpBodySize, MzanziInnovationHub.of(context)!.theme.secondaryColor(),
//fontWeight: FontWeight.bold, fontSize: popUpBodySize,
//fontWeight: FontWeight.bold,
),
), ),
), ),
), Wrap(
Wrap( runSpacing: 10,
runSpacing: 10, spacing: 10,
spacing: 10, children: [
children: [ SizedBox(
SizedBox( width: popUpButtonWidth,
width: popUpButtonWidth, height: 50,
height: 50, child: MIHButton(
child: MIHButton( onTap: () {
onTap: () { updateAccessAPICall(index, "declined");
updateAccessAPICall(index, "declined"); },
}, buttonText: "Decline",
buttonText: "Decline", buttonColor:
buttonColor: MzanziInnovationHub.of(context)!.theme.errorColor(),
MzanziInnovationHub.of(context)!.theme.errorColor(), textColor:
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
MzanziInnovationHub.of(context)!.theme.primaryColor(), ),
), ),
), SizedBox(
SizedBox( width: popUpButtonWidth,
width: popUpButtonWidth, height: 50,
height: 50, child: MIHButton(
child: MIHButton( onTap: () {
onTap: () { updateAccessAPICall(index, "approved");
updateAccessAPICall(index, "approved"); },
}, buttonText: "Approve",
buttonText: "Approve", buttonColor:
buttonColor: MzanziInnovationHub.of(context)!.theme.successColor(),
MzanziInnovationHub.of(context)!.theme.successColor(), textColor:
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
MzanziInnovationHub.of(context)!.theme.primaryColor(), ),
), ),
), ],
], ),
), const SizedBox(
const SizedBox( height: 10,
height: 10, ),
), ],
], ),
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}), }),

View File

@@ -1,15 +1,14 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/main.dart';
import '../../../main.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_api_calls.dart';
import '../../../mih_apis/mih_api_calls.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_button.dart';
import '../../../mih_components/mih_inputs_and_buttons/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import '../../../mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart';
import '../../../mih_components/mih_pop_up_messages/mih_error_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart';
import '../../../mih_components/mih_pop_up_messages/mih_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_warning_message.dart';
import '../../../mih_components/mih_pop_up_messages/mih_warning_message.dart'; import 'package:mzansi_innovation_hub/mih_env/env.dart';
import '../../../mih_env/env.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import '../../../mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/patient_access.dart';
import '../../../mih_objects/patient_access.dart';
class BuildBusinessAccessList extends StatefulWidget { class BuildBusinessAccessList extends StatefulWidget {
final List<PatientAccess> patientAccessList; final List<PatientAccess> patientAccessList;
@@ -216,217 +215,227 @@ class _BuildPatientsListState extends State<BuildBusinessAccessList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Profile Access", windowTitle: "Profile Access",
windowBody: [ windowBody: Column(
const SizedBox( children: [
height: 10, const SizedBox(
), height: 10,
SizedBox( ),
width: 1000, SizedBox(
child: Text( width: 1000,
subtitle, child: Text(
textAlign: TextAlign.left, subtitle,
style: TextStyle( textAlign: TextAlign.left,
color: style: TextStyle(
MzanziInnovationHub.of(context)!.theme.secondaryColor(), color:
fontSize: popUpBodySize, MzanziInnovationHub.of(context)!.theme.secondaryColor(),
//fontWeight: FontWeight.bold, fontSize: popUpBodySize,
//fontWeight: FontWeight.bold,
),
), ),
), ),
), const SizedBox(height: 20.0),
const SizedBox(height: 20.0), Visibility(
Visibility( visible: widget.patientAccessList[index].status == 'pending',
visible: widget.patientAccessList[index].status == 'pending', child: Column(
child: Column( mainAxisSize: MainAxisSize.max,
mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, children: [
children: [ Text(
Text( "Important Notice: Approving Profile Access",
"Important Notice: Approving Profile Access", style: TextStyle(
style: TextStyle( fontWeight: FontWeight.bold,
fontWeight: FontWeight.bold, color:
color: MzanziInnovationHub.of(context)!.theme.errorColor(),
MzanziInnovationHub.of(context)!.theme.errorColor(), ),
), ),
), Text(
Text( "You are about to accept access to your patient's profile. Please be aware of the following important points:",
"You are about to accept access to your patient's profile. Please be aware of the following important points:",
style: TextStyle(
fontWeight: FontWeight.normal,
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
SizedBox(
width: 700,
child: Text(
"1. Permanent Access: Once you accepts this access request, it will become permanent.",
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
color: color:
MzanziInnovationHub.of(context)!.theme.errorColor(), MzanziInnovationHub.of(context)!.theme.errorColor(),
), ),
), ),
), SizedBox(
SizedBox( width: 700,
width: 700, child: Text(
child: Text( "1. Permanent Access: Once you accepts this access request, it will become permanent.",
"2. Shared Information: Any updates make to youe patient profile will be visible to all who have access to the profile.", style: TextStyle(
fontWeight: FontWeight.normal,
color: MzanziInnovationHub.of(context)!
.theme
.errorColor(),
),
),
),
SizedBox(
width: 700,
child: Text(
"2. Shared Information: Any updates make to youe patient profile will be visible to all who have access to the profile.",
style: TextStyle(
fontWeight: FontWeight.normal,
color: MzanziInnovationHub.of(context)!
.theme
.errorColor(),
),
),
),
SizedBox(
width: 700,
child: Text(
"3. Irreversible Access: Once granted, you cannot revoke access to your patient's profile.",
style: TextStyle(
fontWeight: FontWeight.normal,
color: MzanziInnovationHub.of(context)!
.theme
.errorColor(),
),
),
),
Text(
"By pressing the \"Approve\" button you accept the above terms.",
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.normal, fontWeight: FontWeight.bold,
color: color:
MzanziInnovationHub.of(context)!.theme.errorColor(), MzanziInnovationHub.of(context)!.theme.errorColor(),
), ),
), ),
), ],
SizedBox( ),
width: 700,
child: Text(
"3. Irreversible Access: Once granted, you cannot revoke access to your patient's profile.",
style: TextStyle(
fontWeight: FontWeight.normal,
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
),
Text(
"By pressing the \"Approve\" button you accept the above terms.",
style: TextStyle(
fontWeight: FontWeight.bold,
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
],
), ),
), Visibility(
Visibility( visible: widget.patientAccessList[index].status == 'approved',
visible: widget.patientAccessList[index].status == 'approved', child: Column(
child: Column( mainAxisSize: MainAxisSize.max,
mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, children: [
children: [ Text(
Text( "Important Notice: Approved Profile Access",
"Important Notice: Approved Profile Access", style: TextStyle(
style: TextStyle( fontWeight: FontWeight.bold,
fontWeight: FontWeight.bold, color:
color: MzanziInnovationHub.of(context)!.theme.errorColor(),
MzanziInnovationHub.of(context)!.theme.errorColor(), ),
), ),
), Text(
Text( "You have accepted access to your patient's profile. Please be aware of the following important points:",
"You have accepted access to your patient's profile. Please be aware of the following important points:",
style: TextStyle(
fontWeight: FontWeight.normal,
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
SizedBox(
width: 700,
child: Text(
"1. Permanent Access: This access is permanent.",
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
color: color:
MzanziInnovationHub.of(context)!.theme.errorColor(), MzanziInnovationHub.of(context)!.theme.errorColor(),
), ),
), ),
), SizedBox(
SizedBox( width: 700,
width: 700, child: Text(
child: Text( "1. Permanent Access: This access is permanent.",
"2. Shared Information: Any updates make to youe patient profile will be visible to all who have access to the profile.", style: TextStyle(
style: TextStyle( fontWeight: FontWeight.normal,
fontWeight: FontWeight.normal, color: MzanziInnovationHub.of(context)!
color: .theme
MzanziInnovationHub.of(context)!.theme.errorColor(), .errorColor(),
),
), ),
), ),
), SizedBox(
SizedBox( width: 700,
width: 700, child: Text(
child: Text( "2. Shared Information: Any updates make to youe patient profile will be visible to all who have access to the profile.",
"3. Irreversible Access: You cannot revoke this access to your patient's profile.", style: TextStyle(
style: TextStyle( fontWeight: FontWeight.normal,
fontWeight: FontWeight.normal, color: MzanziInnovationHub.of(context)!
color: .theme
MzanziInnovationHub.of(context)!.theme.errorColor(), .errorColor(),
),
), ),
), ),
), SizedBox(
], width: 700,
child: Text(
"3. Irreversible Access: You cannot revoke this access to your patient's profile.",
style: TextStyle(
fontWeight: FontWeight.normal,
color: MzanziInnovationHub.of(context)!
.theme
.errorColor(),
),
),
),
],
),
), ),
), const SizedBox(height: 20.0),
const SizedBox(height: 20.0), const SizedBox(
const SizedBox( height: 20,
height: 20,
),
Visibility(
visible: widget.patientAccessList[index].status == 'pending',
child: Wrap(
runSpacing: 10,
spacing: 10,
children: [
SizedBox(
width: popUpButtonWidth,
height: 50,
child: MIHButton(
onTap: () {
print("request declined");
MIHApiCalls.updatePatientAccessAPICall(
widget.patientAccessList[index].business_id,
widget.patientAccessList[index].requested_by,
widget.patientAccessList[index].app_id,
"declined",
"${widget.signedInUser.fname} ${widget.signedInUser.lname}",
widget.signedInUser,
context,
);
//updateAccessAPICall(index, "declined");
},
buttonText: "Decline",
buttonColor:
MzanziInnovationHub.of(context)!.theme.errorColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
),
SizedBox(
width: popUpButtonWidth,
height: 50,
child: MIHButton(
onTap: () {
print("request approved");
MIHApiCalls.updatePatientAccessAPICall(
widget.patientAccessList[index].business_id,
widget.patientAccessList[index].requested_by,
widget.patientAccessList[index].app_id,
"approved",
"${widget.signedInUser.fname} ${widget.signedInUser.lname}",
widget.signedInUser,
context,
);
//updateAccessAPICall(index, "approved");
},
buttonText: "Approve",
buttonColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
),
],
), ),
), Visibility(
const SizedBox( visible: widget.patientAccessList[index].status == 'pending',
height: 10, child: Wrap(
), runSpacing: 10,
], spacing: 10,
windowTools: const [], children: [
SizedBox(
width: popUpButtonWidth,
height: 50,
child: MIHButton(
onTap: () {
print("request declined");
MIHApiCalls.updatePatientAccessAPICall(
widget.patientAccessList[index].business_id,
widget.patientAccessList[index].requested_by,
widget.patientAccessList[index].app_id,
"declined",
"${widget.signedInUser.fname} ${widget.signedInUser.lname}",
widget.signedInUser,
context,
);
//updateAccessAPICall(index, "declined");
},
buttonText: "Decline",
buttonColor:
MzanziInnovationHub.of(context)!.theme.errorColor(),
textColor: MzanziInnovationHub.of(context)!
.theme
.primaryColor(),
),
),
SizedBox(
width: popUpButtonWidth,
height: 50,
child: MIHButton(
onTap: () {
print("request approved");
MIHApiCalls.updatePatientAccessAPICall(
widget.patientAccessList[index].business_id,
widget.patientAccessList[index].requested_by,
widget.patientAccessList[index].app_id,
"approved",
"${widget.signedInUser.fname} ${widget.signedInUser.lname}",
widget.signedInUser,
context,
);
//updateAccessAPICall(index, "approved");
},
buttonText: "Approve",
buttonColor: MzanziInnovationHub.of(context)!
.theme
.successColor(),
textColor: MzanziInnovationHub.of(context)!
.theme
.primaryColor(),
),
),
],
),
),
const SizedBox(
height: 10,
),
],
),
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}), }),

View File

@@ -1,6 +1,6 @@
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:mzansi_innovation_hub/mih_packages/access_review/package_tools/mih_access_requests.dart'; import 'package:mzansi_innovation_hub/mih_packages/access_review/package_tools/mih_access_requests.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -20,7 +20,7 @@ class _MihAccessState extends State<MihAccess> {
int _selcetedIndex = 0; int _selcetedIndex = 0;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),
@@ -34,8 +34,8 @@ class _MihAccessState extends State<MihAccess> {
); );
} }
MihAppAction getAction() { MihPackageAction getAction() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -45,14 +45,14 @@ class _MihAccessState extends State<MihAccess> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.people)] = () { temp[const Icon(Icons.people)] = () {
setState(() { setState(() {
_selcetedIndex = 0; _selcetedIndex = 0;
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -21,7 +21,7 @@ class MihAccessTile extends StatefulWidget {
class _MihAccessTileState extends State<MihAccessTile> { class _MihAccessTileState extends State<MihAccessTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/mih-access', '/mih-access',

View File

@@ -1,5 +1,5 @@
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-app_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../../main.dart'; import '../../../main.dart';
@@ -244,7 +244,7 @@ class _MihAccessRequestState extends State<MihAccessRequest> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -4,7 +4,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_action.dart'
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_header.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_header.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_layout_builder.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_layout_builder.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_alert.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_packages/mih_home/mih_profile_getter.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_home/mih_profile_getter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -106,7 +106,7 @@ class _BiometricCheckState extends State<BiometricCheck> {
} }
void authErrorPopUp() { void authErrorPopUp() {
Widget alertpopUp = MihAppAlert( Widget alertpopUp = MihPackageAlert(
alertIcon: Icon( alertIcon: Icon(
Icons.fingerprint, Icons.fingerprint,
color: MzanziInnovationHub.of(context)!.theme.errorColor(), color: MzanziInnovationHub.of(context)!.theme.errorColor(),

View File

@@ -1,6 +1,6 @@
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tools/simple_calc.dart'; import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tools/simple_calc.dart';
import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tools/tip_calc.dart'; import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tools/tip_calc.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -21,7 +21,7 @@ class _MIHCalculatorState extends State<MIHCalculator> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),
@@ -35,8 +35,8 @@ class _MIHCalculatorState extends State<MIHCalculator> {
); );
} }
MihAppAction getAction() { MihPackageAction getAction() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -46,7 +46,7 @@ class _MIHCalculatorState extends State<MIHCalculator> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.calculate)] = () { temp[const Icon(Icons.calculate)] = () {
setState(() { setState(() {
@@ -58,7 +58,7 @@ class _MIHCalculatorState extends State<MIHCalculator> {
_selectedIndex = 1; _selectedIndex = 1;
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selectedIndex, selcetedIndex: _selectedIndex,
); );

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
@@ -20,7 +20,7 @@ class MihCalculatorTile extends StatefulWidget {
class _MihCalculatorTileState extends State<MihCalculatorTile> { class _MihCalculatorTileState extends State<MihCalculatorTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/calculator', '/calculator',

View File

@@ -1,7 +1,7 @@
import 'package:mzansi_innovation_hub/main.dart'; 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_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_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:math_expressions/math_expressions.dart'; import 'package:math_expressions/math_expressions.dart';
@@ -71,7 +71,7 @@ class _SimpleCalcState extends State<SimpleCalc> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -3,8 +3,8 @@ 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_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_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_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_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_error_message.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@@ -116,107 +116,27 @@ class _TipCalcState extends State<TipCalc> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Calculation Results", windowTitle: "Calculation Results",
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowTools: const [], windowBody: Column(
windowBody: [ children: [
// FaIcon(
// FontAwesomeIcons.moneyBills,
// color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// size: 30,
// ),
// const Divider(),
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
FaIcon(
FontAwesomeIcons.coins,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
size: 35,
),
const SizedBox(width: 15),
Text(
"Tip",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 25,
fontWeight: FontWeight.bold,
color:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
],
),
Text(
tip,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
const Divider(),
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
FaIcon(
FontAwesomeIcons.moneyBills,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
size: 35,
),
const SizedBox(width: 15),
Text(
"Total",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 25,
fontWeight: FontWeight.bold,
color:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
],
),
Text(
total,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
Text(
"~ ${double.parse(total).ceil()}.00",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
const Divider(),
if (splitBillController.text == "Yes")
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
FaIcon( FaIcon(
FontAwesomeIcons.peopleGroup, FontAwesomeIcons.coins,
color: color:
MzanziInnovationHub.of(context)!.theme.secondaryColor(), MzanziInnovationHub.of(context)!.theme.secondaryColor(),
size: 35, size: 35,
), ),
const SizedBox(width: 15), const SizedBox(width: 15),
Text( Text(
"Total per Person", "Tip",
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontSize: 25, fontSize: 25,
@@ -227,9 +147,8 @@ class _TipCalcState extends State<TipCalc> {
), ),
], ],
), ),
if (splitBillController.text == "Yes")
Text( Text(
amountPerPerson, tip,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontSize: 30, fontSize: 30,
@@ -237,9 +156,32 @@ class _TipCalcState extends State<TipCalc> {
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
), ),
), ),
if (splitBillController.text == "Yes") const Divider(),
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
FaIcon(
FontAwesomeIcons.moneyBills,
color:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
size: 35,
),
const SizedBox(width: 15),
Text(
"Total",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 25,
fontWeight: FontWeight.bold,
color:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
],
),
Text( Text(
"~ ${double.parse(amountPerPerson).ceil()}.00", total,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontSize: 30, fontSize: 30,
@@ -247,8 +189,66 @@ class _TipCalcState extends State<TipCalc> {
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
), ),
), ),
// if (splitBillController.text == "Yes") const Divider(), Text(
], "~ ${double.parse(total).ceil()}.00",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
const Divider(),
if (splitBillController.text == "Yes")
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
FaIcon(
FontAwesomeIcons.peopleGroup,
color:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
size: 35,
),
const SizedBox(width: 15),
Text(
"Total per Person",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 25,
fontWeight: FontWeight.bold,
color: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
),
),
],
),
if (splitBillController.text == "Yes")
Text(
amountPerPerson,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold,
color:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
if (splitBillController.text == "Yes")
Text(
"~ ${double.parse(amountPerPerson).ceil()}.00",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold,
color:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
// if (splitBillController.text == "Yes") const Divider(),
],
),
), ),
); );
} }
@@ -262,7 +262,7 @@ class _TipCalcState extends State<TipCalc> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -1,12 +1,12 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:supertokens_flutter/http.dart' as http; import 'package:supertokens_flutter/http.dart' as http;
import '../../../main.dart'; import '../../../main.dart';
import '../../../mih_components/mih_inputs_and_buttons/mih_button.dart'; import '../../../mih_components/mih_inputs_and_buttons/mih_button.dart';
import '../../../mih_components/mih_layout/mih_window.dart';
import '../../../mih_components/mih_pop_up_messages/mih_error_message.dart'; import '../../../mih_components/mih_pop_up_messages/mih_error_message.dart';
import '../../../mih_components/mih_pop_up_messages/mih_success_message.dart'; import '../../../mih_components/mih_pop_up_messages/mih_success_message.dart';
import '../../../mih_components/mih_pop_up_messages/mih_warning_message.dart'; import '../../../mih_components/mih_pop_up_messages/mih_warning_message.dart';
@@ -221,180 +221,70 @@ class _BuildPatientsListState extends State<BuildAccessRequestList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Update Appointment Access", windowTitle: "Update Appointment Access",
windowBody: [ windowBody: Column(
const SizedBox( children: [
height: 10, const SizedBox(
), height: 10,
Padding( ),
padding: const EdgeInsets.symmetric(horizontal: 10.0), Padding(
child: Text( padding: const EdgeInsets.symmetric(horizontal: 10.0),
subtitle, child: Text(
textAlign: TextAlign.left, subtitle,
style: TextStyle( textAlign: TextAlign.left,
color: style: TextStyle(
MzanziInnovationHub.of(context)!.theme.secondaryColor(), color:
fontSize: popUpBodySize, MzanziInnovationHub.of(context)!.theme.secondaryColor(),
//fontWeight: FontWeight.bold, fontSize: popUpBodySize,
//fontWeight: FontWeight.bold,
),
), ),
), ),
), Wrap(
Wrap( runSpacing: 10,
runSpacing: 10, spacing: 10,
spacing: 10, children: [
children: [ SizedBox(
SizedBox( width: popUpButtonWidth,
width: popUpButtonWidth, height: 50,
height: 50, child: MIHButton(
child: MIHButton( onTap: () {
onTap: () { updateAccessAPICall(index, "declined");
updateAccessAPICall(index, "declined"); },
}, buttonText: "Decline",
buttonText: "Decline", buttonColor:
buttonColor: MzanziInnovationHub.of(context)!.theme.errorColor(),
MzanziInnovationHub.of(context)!.theme.errorColor(), textColor:
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
MzanziInnovationHub.of(context)!.theme.primaryColor(), ),
), ),
), SizedBox(
SizedBox( width: popUpButtonWidth,
width: popUpButtonWidth, height: 50,
height: 50, child: MIHButton(
child: MIHButton( onTap: () {
onTap: () { updateAccessAPICall(index, "approved");
updateAccessAPICall(index, "approved"); },
}, buttonText: "Approve",
buttonText: "Approve", buttonColor:
buttonColor: MzanziInnovationHub.of(context)!.theme.successColor(),
MzanziInnovationHub.of(context)!.theme.successColor(), textColor:
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
MzanziInnovationHub.of(context)!.theme.primaryColor(), ),
), ),
), ],
], ),
), const SizedBox(
const SizedBox( height: 10,
height: 10, ),
), ],
], ),
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}), }),
); );
// showDialog(
// context: context,
// barrierDismissible: false,
// builder: (context) => Dialog(
// child: Stack(
// children: [
// Container(
// //padding: const EdgeInsets.all(15.0),
// width: popUpWidth,
// height: popUpheight,
// decoration: BoxDecoration(
// color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
// borderRadius: BorderRadius.circular(25.0),
// border: Border.all(
// color:
// MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// width: 5.0),
// ),
// child: SingleChildScrollView(
// padding: EdgeInsets.all(popUpPaddingSize),
// child: Column(
// mainAxisSize: MainAxisSize.min,
// mainAxisAlignment: MainAxisAlignment.center,
// crossAxisAlignment: CrossAxisAlignment.center,
// children: [
// Text(
// "Update Appointment Access",
// textAlign: TextAlign.center,
// style: TextStyle(
// color: MzanziInnovationHub.of(context)!
// .theme
// .secondaryColor(),
// fontSize: popUpTitleSize,
// fontWeight: FontWeight.bold,
// ),
// ),
// const SizedBox(height: 15.0),
// Text(
// subtitle,
// textAlign: TextAlign.left,
// style: TextStyle(
// color: MzanziInnovationHub.of(context)!
// .theme
// .secondaryColor(),
// fontSize: popUpBodySize,
// //fontWeight: FontWeight.bold,
// ),
// ),
// const SizedBox(height: 10.0),
// Wrap(
// runSpacing: 10,
// spacing: 10,
// children: [
// SizedBox(
// width: popUpButtonWidth,
// height: 50,
// child: MIHButton(
// onTap: () {
// updateAccessAPICall(index, "declined");
// },
// buttonText: "Decline",
// buttonColor: MzanziInnovationHub.of(context)!
// .theme
// .errorColor(),
// textColor: MzanziInnovationHub.of(context)!
// .theme
// .primaryColor(),
// ),
// ),
// SizedBox(
// width: popUpButtonWidth,
// height: 50,
// child: MIHButton(
// onTap: () {
// updateAccessAPICall(index, "approved");
// },
// buttonText: "Approve",
// buttonColor: MzanziInnovationHub.of(context)!
// .theme
// .successColor(),
// textColor: MzanziInnovationHub.of(context)!
// .theme
// .primaryColor(),
// ),
// ),
// ],
// )
// ],
// ),
// ),
// ),
// Positioned(
// top: 5,
// right: 5,
// width: 50,
// height: 50,
// child: IconButton(
// onPressed: () {
// Navigator.pop(context);
// },
// icon: Icon(
// Icons.close,
// color: MzanziInnovationHub.of(context)!.theme.errorColor(),
// size: 35,
// ),
// ),
// ),
// ],
// ),
// ),
// );
} }
@override @override

View File

@@ -1,3 +1,4 @@
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_mzansi_calendar_apis.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_mzansi_calendar_apis.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_button.dart';
@@ -5,7 +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_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_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_inputs_and_buttons/mih_time_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.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_error_message.dart';
import 'package:mzansi_innovation_hub/mih_env/env.dart'; import 'package:mzansi_innovation_hub/mih_env/env.dart';
@@ -151,18 +152,45 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Appointment Details", windowTitle: "Appointment Details",
windowTools: [ menuOptions: [
Visibility( SpeedDialChild(
visible: canEditAppointment(index), child: Icon(
child: IconButton( Icons.edit,
onPressed: () { color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
deleteAppointmentConfirmationWindow(index);
},
icon: const Icon(Icons.delete),
), ),
label: "Edit Appointment",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
appointmentUpdateWindow(index);
},
),
SpeedDialChild(
child: Icon(
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Delete Appointment",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
deleteAppointmentConfirmationWindow(index);
},
), ),
], ],
onWindowTapClose: () { onWindowTapClose: () {
@@ -172,79 +200,50 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
widget.titleController.clear(); widget.titleController.clear();
widget.descriptionIDController.clear(); widget.descriptionIDController.clear();
}, },
windowBody: [ windowBody: Column(
SizedBox( children: [
// width: 500, const SizedBox(height: 10),
child: MIHTextField( SizedBox(
controller: widget.titleController,
hintText: "Title",
editable: false,
required: false,
),
),
const SizedBox(height: 10),
SizedBox(
// width: 500, // width: 500,
child: MIHTextField( child: MIHTextField(
controller: widget.dateController, controller: widget.titleController,
hintText: "Date", hintText: "Title",
editable: false, editable: false,
required: false, required: false,
)),
const SizedBox(height: 10),
SizedBox(
// width: 500,
child: MIHTextField(
controller: widget.timeController,
hintText: "Time",
editable: false,
required: false,
)),
const SizedBox(height: 10),
SizedBox(
// width: 500,
height: 250,
child: MIHMLTextField(
controller: widget.descriptionIDController,
hintText: "Description",
editable: false,
required: false,
),
),
const SizedBox(height: 20),
Visibility(
visible: canEditAppointment(index),
child: SizedBox(
width: 500,
height: 50,
child: MIHButton(
onTap: () {
appointmentUpdateWindow(index);
},
buttonText: "Edit",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
), ),
), ),
), const SizedBox(height: 10),
// SizedBox( SizedBox(
// width: 500, // width: 500,
// height: 50, child: MIHTextField(
// child: MIHButton( controller: widget.dateController,
// onTap: () { hintText: "Date",
// addAppointmentCall(); editable: false,
// checkforchange(); required: false,
// }, )),
// buttonText: "Add", const SizedBox(height: 10),
// buttonColor: SizedBox(
// MzanziInnovationHub.of(context)!.theme.successColor(), // width: 500,
// textColor: child: MIHTextField(
// MzanziInnovationHub.of(context)!.theme.primaryColor(), controller: widget.timeController,
// ), hintText: "Time",
// ), editable: false,
], required: false,
)),
const SizedBox(height: 10),
SizedBox(
// width: 500,
height: 250,
child: MIHMLTextField(
controller: widget.descriptionIDController,
hintText: "Description",
editable: false,
required: false,
),
),
const SizedBox(height: 10),
],
),
); );
}, },
); );
@@ -255,18 +254,45 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Appointment Details", windowTitle: "Appointment Details",
windowTools: [ menuOptions: [
Visibility( SpeedDialChild(
visible: canEditAppointment(index), child: Icon(
child: IconButton( Icons.edit,
onPressed: () { color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
deleteAppointmentConfirmationWindow(index);
},
icon: const Icon(Icons.delete),
), ),
label: "Edit Appointment",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
appointmentUpdateWindow(index);
},
),
SpeedDialChild(
child: Icon(
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Delete Appointment",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
deleteAppointmentConfirmationWindow(index);
},
), ),
], ],
onWindowTapClose: () { onWindowTapClose: () {
@@ -276,89 +302,59 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
widget.titleController.clear(); widget.titleController.clear();
widget.descriptionIDController.clear(); widget.descriptionIDController.clear();
}, },
windowBody: [ windowBody: Column(
SizedBox( children: [
// width: 500, SizedBox(
child: MIHTextField(
controller: widget.titleController,
hintText: "Title",
editable: false,
required: false,
),
),
const SizedBox(height: 10),
SizedBox(
// width: 500,
child: MIHTextField(
controller: widget.titleController,
hintText: "Patient ID Number",
editable: false,
required: false,
),
),
const SizedBox(height: 10),
SizedBox(
// width: 500, // width: 500,
child: MIHTextField( child: MIHTextField(
controller: widget.dateController, controller: widget.titleController,
hintText: "Date", hintText: "Title",
editable: false, editable: false,
required: false, required: false,
)),
const SizedBox(height: 10),
SizedBox(
// width: 500,
child: MIHTextField(
controller: widget.timeController,
hintText: "Time",
editable: false,
required: false,
)),
const SizedBox(height: 10),
SizedBox(
// width: 500,
height: 250,
child: MIHMLTextField(
controller: widget.descriptionIDController,
hintText: "Description",
editable: false,
required: false,
),
),
const SizedBox(height: 20),
Visibility(
visible: canEditAppointment(index),
child: SizedBox(
width: 500,
height: 50,
child: MIHButton(
onTap: () {
appointmentUpdateWindow(index);
},
buttonText: "Edit",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
), ),
), ),
), const SizedBox(height: 10),
// SizedBox( SizedBox(
// width: 500, // width: 500,
// height: 50, child: MIHTextField(
// child: MIHButton( controller: widget.titleController,
// onTap: () { hintText: "Patient ID Number",
// addAppointmentCall(); editable: false,
// checkforchange(); required: false,
// }, ),
// buttonText: "Add", ),
// buttonColor: const SizedBox(height: 10),
// MzanziInnovationHub.of(context)!.theme.successColor(), SizedBox(
// textColor: // width: 500,
// MzanziInnovationHub.of(context)!.theme.primaryColor(), child: MIHTextField(
// ), controller: widget.dateController,
// ), hintText: "Date",
], editable: false,
required: false,
)),
const SizedBox(height: 10),
SizedBox(
// width: 500,
child: MIHTextField(
controller: widget.timeController,
hintText: "Time",
editable: false,
required: false,
)),
const SizedBox(height: 10),
SizedBox(
// width: 500,
height: 250,
child: MIHMLTextField(
controller: widget.descriptionIDController,
hintText: "Description",
editable: false,
required: false,
),
),
const SizedBox(height: 20),
],
),
); );
}, },
); );
@@ -369,10 +365,9 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Update Appointment", windowTitle: "Update Appointment",
windowTools: [],
onWindowTapClose: () { onWindowTapClose: () {
setState(() { setState(() {
widget.titleController.text = widget.appointmentList[index].title; widget.titleController.text = widget.appointmentList[index].title;
@@ -387,95 +382,70 @@ class _BuildAppointmentListState extends State<BuildAppointmentList> {
}); });
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
windowBody: [ windowBody: Column(
SizedBox( children: [
// width: 500, SizedBox(
child: MIHTextField( // width: 500,
controller: widget.titleController, child: MIHTextField(
hintText: "Title", controller: widget.titleController,
editable: true, hintText: "Title",
required: true, editable: true,
), required: true,
),
const SizedBox(height: 10),
SizedBox(
// width: 500,
child: MIHDateField(
controller: widget.dateController,
lableText: "Date",
required: true,
),
),
const SizedBox(height: 10),
SizedBox(
// width: 500,
child: MIHTimeField(
controller: widget.timeController,
lableText: "Time",
required: true,
),
),
const SizedBox(height: 10),
SizedBox(
// width: 500,
height: 250,
child: MIHMLTextField(
controller: widget.descriptionIDController,
hintText: "Description",
editable: true,
required: true,
),
),
const SizedBox(height: 20),
Wrap(
alignment: WrapAlignment.center,
runSpacing: 10,
spacing: 10,
children: [
SizedBox(
width: 500,
height: 50,
child: MIHButton(
onTap: () {
updateAppointmentCall(index);
},
buttonText: "Update",
buttonColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
), ),
// SizedBox( ),
// width: 500, const SizedBox(height: 10),
// height: 50, SizedBox(
// child: MIHButton( // width: 500,
// onTap: () { child: MIHDateField(
// setState(() { controller: widget.dateController,
// widget.titleController.text = lableText: "Date",
// widget.appointmentList[index].title; required: true,
// widget.descriptionIDController.text = ),
// widget.appointmentList[index].description; ),
// widget.dateController.text = widget const SizedBox(height: 10),
// .appointmentList[index].date_time SizedBox(
// .split('T')[0]; // width: 500,
// widget.timeController.text = widget child: MIHTimeField(
// .appointmentList[index].date_time controller: widget.timeController,
// .split('T')[1] lableText: "Time",
// .substring(0, 5); required: true,
// }); ),
// Navigator.of(context).pop(); ),
// }, const SizedBox(height: 10),
// buttonText: "Cancel", SizedBox(
// buttonColor: // width: 500,
// MzanziInnovationHub.of(context)!.theme.errorColor(), height: 250,
// textColor: child: MIHMLTextField(
// MzanziInnovationHub.of(context)!.theme.primaryColor(), controller: widget.descriptionIDController,
// ), hintText: "Description",
// ), editable: true,
], required: true,
) ),
], ),
const SizedBox(height: 20),
Wrap(
alignment: WrapAlignment.center,
runSpacing: 10,
spacing: 10,
children: [
SizedBox(
width: 500,
height: 50,
child: MIHButton(
onTap: () {
updateAppointmentCall(index);
},
buttonText: "Update",
buttonColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
),
],
)
],
),
); );
}, },
); );

View File

@@ -1,6 +1,6 @@
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:mzansi_innovation_hub/mih_packages/calendar/package_tools/appointments.dart'; import 'package:mzansi_innovation_hub/mih_packages/calendar/package_tools/appointments.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -21,7 +21,7 @@ class _MzansiCalendarState extends State<MzansiCalendar> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),
@@ -35,8 +35,8 @@ class _MzansiCalendarState extends State<MzansiCalendar> {
); );
} }
MihAppAction getAction() { MihPackageAction getAction() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -46,7 +46,7 @@ class _MzansiCalendarState extends State<MzansiCalendar> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.calendar_month)] = () { temp[const Icon(Icons.calendar_month)] = () {
setState(() { setState(() {
@@ -54,7 +54,7 @@ class _MzansiCalendarState extends State<MzansiCalendar> {
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -21,7 +21,7 @@ class MzansiCalendarTile extends StatefulWidget {
class _MzansiCalendarTileState extends State<MzansiCalendarTile> { class _MzansiCalendarTileState extends State<MzansiCalendarTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/calendar', '/calendar',

View File

@@ -6,9 +6,9 @@ import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_
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_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_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_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_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_error_message.dart';
import 'package:mzansi_innovation_hub/mih_objects/appointment.dart'; import 'package:mzansi_innovation_hub/mih_objects/appointment.dart';
import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart';
@@ -101,10 +101,9 @@ class _PatientAccessRequestState extends State<Appointments> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Add Appointment", windowTitle: "Add Appointment",
windowTools: [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
_appointmentDateController.clear(); _appointmentDateController.clear();
@@ -112,61 +111,63 @@ class _PatientAccessRequestState extends State<Appointments> {
_appointmentTitleController.clear(); _appointmentTitleController.clear();
_appointmentDescriptionIDController.clear(); _appointmentDescriptionIDController.clear();
}, },
windowBody: [ windowBody: Column(
SizedBox( children: [
// width: 500, SizedBox(
child: MIHTextField( // width: 500,
controller: _appointmentTitleController, child: MIHTextField(
hintText: "Title", controller: _appointmentTitleController,
editable: true, hintText: "Title",
required: true, editable: true,
required: true,
),
), ),
), const SizedBox(height: 10),
const SizedBox(height: 10), SizedBox(
SizedBox( // width: 500,
// width: 500, child: MIHDateField(
child: MIHDateField( controller: _appointmentDateController,
controller: _appointmentDateController, lableText: "Date",
lableText: "Date", required: true,
required: true, ),
), ),
), const SizedBox(height: 10),
const SizedBox(height: 10), SizedBox(
SizedBox( // width: 500,
// width: 500, child: MIHTimeField(
child: MIHTimeField( controller: _appointmentTimeController,
controller: _appointmentTimeController, lableText: "Time",
lableText: "Time", required: true,
required: true, ),
), ),
), const SizedBox(height: 10),
const SizedBox(height: 10), SizedBox(
SizedBox( // width: 500,
// width: 500, height: 250,
height: 250, child: MIHMLTextField(
child: MIHMLTextField( controller: _appointmentDescriptionIDController,
controller: _appointmentDescriptionIDController, hintText: "Description",
hintText: "Description", editable: true,
editable: true, required: true,
required: true, ),
), ),
), const SizedBox(height: 20),
const SizedBox(height: 20), SizedBox(
SizedBox( width: 500,
width: 500, height: 50,
height: 50, child: MIHButton(
child: MIHButton( onTap: () {
onTap: () { addAppointmentCall();
addAppointmentCall(); },
}, buttonText: "Add",
buttonText: "Add", buttonColor:
buttonColor: MzanziInnovationHub.of(context)!.theme.successColor(),
MzanziInnovationHub.of(context)!.theme.successColor(), textColor:
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
MzanziInnovationHub.of(context)!.theme.primaryColor(), ),
), ),
), ],
], ),
); );
}, },
); );
@@ -365,7 +366,7 @@ class _PatientAccessRequestState extends State<Appointments> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -1,7 +1,7 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart';
@@ -74,7 +74,7 @@ class _MihHomeState extends State<MihHome> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),
@@ -98,7 +98,7 @@ class _MihHomeState extends State<MihHome> {
Widget getAction() { Widget getAction() {
return Builder(builder: (context) { return Builder(builder: (context) {
return MihAppAction( return MihPackageAction(
icon: Padding( icon: Padding(
padding: const EdgeInsets.only(left: 5.0), padding: const EdgeInsets.only(left: 5.0),
child: MihCircleAvatar( child: MihCircleAvatar(
@@ -140,7 +140,7 @@ class _MihHomeState extends State<MihHome> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.person)] = () { temp[const Icon(Icons.person)] = () {
setState(() { setState(() {
@@ -156,7 +156,7 @@ class _MihHomeState extends State<MihHome> {
}); });
}; };
} }
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );

View File

@@ -2,6 +2,8 @@ import 'dart:async';
import 'dart:convert'; import 'dart:convert';
// import 'dart:convert'; // import 'dart:convert';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_objects/patients.dart'; import 'package:mzansi_innovation_hub/mih_objects/patients.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@@ -21,7 +23,6 @@ import '../../mih_components/mih_layout/mih_header.dart';
import '../../mih_components/mih_layout/mih_layout_builder.dart'; import '../../mih_components/mih_layout/mih_layout_builder.dart';
import '../../mih_components/mih_layout/mih_notification_drawer.dart'; import '../../mih_components/mih_layout/mih_notification_drawer.dart';
import '../../mih_components/mih_layout/mih_tile.dart'; import '../../mih_components/mih_layout/mih_tile.dart';
import '../../mih_components/mih_layout/mih_window.dart';
import '../../mih_components/mih_pop_up_messages/mih_delete_message.dart'; import '../../mih_components/mih_pop_up_messages/mih_delete_message.dart';
import '../../mih_components/mih_pop_up_messages/mih_error_message.dart'; import '../../mih_components/mih_pop_up_messages/mih_error_message.dart';
import '../../mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import '../../mih_components/mih_pop_up_messages/mih_loading_circle.dart';
@@ -844,39 +845,35 @@ class _MIHHomeLegacyState extends State<MIHHomeLegacy> {
// return const MIHErrorMessage(errorType: "User Exists"); // return const MIHErrorMessage(errorType: "User Exists");
// return const MIHErrorMessage(errorType: "Password Match"); // return const MIHErrorMessage(errorType: "Password Match");
// return const MIHErrorMessage(errorType: "Invalid Credentials"); // return const MIHErrorMessage(errorType: "Invalid Credentials");
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: windowTitle:
"Test Window title that is too large for mobile devices", "Test Window title that is too large for mobile devices",
windowBody: const [ windowBody: const Column(
SizedBox( children: [
height: 250, SizedBox(
) height: 250,
], )
windowTools: [ ],
IconButton( ),
onPressed: () { menuOptions: [
//deleteFilePopUp(filePath, fileID); SpeedDialChild(
}, child: Icon(
icon: Icon(
Icons.delete, Icons.delete,
size: 35, color:
color: MzanziInnovationHub.of(context)! MzanziInnovationHub.of(context)!.theme.primaryColor(),
.theme
.secondaryColor(),
), ),
), label: "Delete File",
IconButton( labelBackgroundColor:
onPressed: () { MzanziInnovationHub.of(context)!.theme.successColor(),
//deleteFilePopUp(filePath, fileID); labelStyle: TextStyle(
}, color:
icon: Icon( MzanziInnovationHub.of(context)!.theme.primaryColor(),
Icons.wallet, fontWeight: FontWeight.bold,
size: 35,
color: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
), ),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {},
), ),
], ],
onWindowTapClose: () { onWindowTapClose: () {

View File

@@ -1,9 +1,9 @@
import 'package:mzansi_innovation_hub/main.dart'; 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_button.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_packages/mih_home/mih_home.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_home/mih_home.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -67,7 +67,7 @@ class _MIHProfileGetterState extends State<MIHProfileGetter> {
} }
} }
MihAppTools getErrorTools() { MihPackageTools getErrorTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.power_off_outlined)] = () { temp[const Icon(Icons.power_off_outlined)] = () {
setState(() { setState(() {
@@ -75,7 +75,7 @@ class _MIHProfileGetterState extends State<MIHProfileGetter> {
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );
@@ -83,7 +83,7 @@ class _MIHProfileGetterState extends State<MIHProfileGetter> {
List<Widget> getErrorToolBody(String error) { List<Widget> getErrorToolBody(String error) {
List<Widget> toolBodies = [ List<Widget> toolBodies = [
MihAppToolBody( MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: Column( bodyItem: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
@@ -152,8 +152,8 @@ class _MIHProfileGetterState extends State<MIHProfileGetter> {
} }
Widget errorPage(String error) { Widget errorPage(String error) {
return MihApp( return MihPackage(
appActionButton: MihAppAction( appActionButton: MihPackageAction(
icon: const Icon(Icons.refresh), icon: const Icon(Icons.refresh),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {

View File

@@ -1,7 +1,7 @@
import 'package:mzansi_innovation_hub/main.dart'; 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_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-app_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart';
@@ -189,7 +189,7 @@ class _MihBusinessHomeState extends State<MihBusinessHome>
final Size size = MediaQuery.sizeOf(context); final Size size = MediaQuery.sizeOf(context);
final double width = size.width; final double width = size.width;
final double height = size.height; final double height = size.height;
return MihAppToolBody( return MihPackageToolBody(
borderOn: false, borderOn: false,
bodyItem: getBody(width, height), bodyItem: getBody(width, height),
); );

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_components/mih_inputs_and_buttons/mih_search_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_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart';
@@ -149,7 +149,7 @@ class _MihPersonalHomeState extends State<MihPersonalHome>
//=============== Dev =============== //=============== Dev ===============
if (widget.isDevActive) { if (widget.isDevActive) {
temp.add({ temp.add({
"test": MihAppTile( "test": MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/package-dev', '/package-dev',
@@ -234,7 +234,7 @@ class _MihPersonalHomeState extends State<MihPersonalHome>
final double width = size.width; final double width = size.width;
final double height = size.height; final double height = size.height;
return MihAppToolBody( return MihPackageToolBody(
borderOn: false, borderOn: false,
bodyItem: getBody(width, height), bodyItem: getBody(width, height),
); );

View File

@@ -1,6 +1,6 @@
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_ai/package_tools/ai_chat.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_ai/package_tools/ai_chat.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -19,8 +19,8 @@ class MzansiAi extends StatefulWidget {
class _MzansiAiState extends State<MzansiAi> { class _MzansiAiState extends State<MzansiAi> {
int _selcetedIndex = 0; int _selcetedIndex = 0;
MihAppAction getAction() { MihPackageAction getAction() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -30,7 +30,7 @@ class _MzansiAiState extends State<MzansiAi> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.chat)] = () { temp[const Icon(Icons.chat)] = () {
setState(() { setState(() {
@@ -38,7 +38,7 @@ class _MzansiAiState extends State<MzansiAi> {
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );
@@ -58,7 +58,7 @@ class _MzansiAiState extends State<MzansiAi> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -21,7 +21,7 @@ class MzansiAiTile extends StatefulWidget {
class _MzansiAiTileState extends State<MzansiAiTile> { class _MzansiAiTileState extends State<MzansiAiTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/mzansi-ai', '/mzansi-ai',

View File

@@ -5,8 +5,8 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.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_dropdown_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_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_app_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.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';
@@ -169,67 +169,35 @@ class _AiChatState extends State<AiChat> {
textStream = snapshot.requireData; textStream = snapshot.requireData;
// print("Text: $textStream"); // print("Text: $textStream");
// _speakText(textStream!); // _speakText(textStream!);
return MihAppWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: 'Mzansi AI Thoughts', windowTitle: 'Mzansi AI Thoughts',
windowTools: Row( menuOptions: _aiThinking == true
children: [ ? null
Visibility( : [
visible: _aiThinking == false, SpeedDialChild(
child: Padding( child: Icon(
padding: const EdgeInsets.all(5.0), Icons.volume_up,
child: Container(
//color: MzanziInnovationHub.of(context)!.theme.successColor(),
decoration: BoxDecoration(
color: MzanziInnovationHub.of(context)!
.theme
.successColor(),
borderRadius: const BorderRadius.all(
Radius.circular(100),
),
),
child: IconButton(
color: MzanziInnovationHub.of(context)! color: MzanziInnovationHub.of(context)!
.theme .theme
.primaryColor(), .primaryColor(),
onPressed: () async {
print("Start TTS now");
_speakText(snapshot.requireData);
},
icon: const Icon(Icons.volume_up),
), ),
), label: "Read Aloud",
), labelBackgroundColor:
), MzanziInnovationHub.of(context)!.theme.successColor(),
Visibility( labelStyle: TextStyle(
visible: _aiThinking == true,
child: Padding(
padding: const EdgeInsets.all(5.0),
child: Container(
// color: MzanziInnovationHub.of(context)!.theme.errorColor(),
decoration: BoxDecoration(
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
borderRadius: const BorderRadius.all(
Radius.circular(100),
),
),
child: IconButton(
color: MzanziInnovationHub.of(context)! color: MzanziInnovationHub.of(context)!
.theme .theme
.primaryColor(), .primaryColor(),
onPressed: () { fontWeight: FontWeight.bold,
//print("Start TTS now");
_flutterTts.stop();
},
icon: const Icon(Icons.volume_off),
), ),
), backgroundColor:
), MzanziInnovationHub.of(context)!.theme.successColor(),
), onTap: () {
], _speakText(snapshot.requireData);
), },
)
],
onWindowTapClose: () { onWindowTapClose: () {
_captureAIResponse(snapshot.requireData); _captureAIResponse(snapshot.requireData);
_flutterTts.stop(); _flutterTts.stop();
@@ -241,66 +209,23 @@ class _AiChatState extends State<AiChat> {
child: Column( child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
Stack( Text(
children: [ snapshot.requireData,
Text( textAlign: TextAlign.left,
snapshot.requireData, style: TextStyle(
textAlign: TextAlign.left, color: MzanziInnovationHub.of(context)!
style: TextStyle( .theme
color: MzanziInnovationHub.of(context)! .secondaryColor(),
.theme fontSize: _chatFrontSize,
.secondaryColor(), fontWeight: FontWeight.bold,
fontSize: _chatFrontSize, ),
fontWeight: FontWeight.bold,
),
),
Positioned(
bottom: 0,
right: 0,
child: Visibility(
visible: _aiThinking == false,
child: IconButton.filled(
iconSize: 25,
autofocus: true,
onPressed: () {
_captureAIResponse(snapshot.requireData);
_flutterTts.stop();
Navigator.of(context).pop();
},
focusColor: MzanziInnovationHub.of(context)!
.theme
.successColor(),
icon: Icon(
Icons.check,
color: MzanziInnovationHub.of(context)!
.theme
.primaryColor(),
),
),
// MIHButton(
// onTap: () {
// _captureAIResponse(snapshot.requireData);
// Navigator.of(context).pop();
// },
// buttonText: "Continue",
// buttonColor: MzanziInnovationHub.of(context)!
// .theme
// .successColor(),
// textColor: MzanziInnovationHub.of(context)!
// .theme
// .primaryColor(),
// ),
),
),
],
), ),
], ],
), ),
), ),
); );
} else { } else {
return MihAppWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: 'Mzansi AI Thoughts', windowTitle: 'Mzansi AI Thoughts',
// windowTools: [], // windowTools: [],
@@ -672,7 +597,7 @@ class _AiChatState extends State<AiChat> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: false, borderOn: false,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -1,10 +1,11 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; 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_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_dropdown_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_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.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_error_message.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';
@@ -149,80 +150,92 @@ class _BuildEmployeeListState extends State<BuildEmployeeList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Employee Details", windowTitle: "Employee Details",
windowTools: [ menuOptions: [
IconButton( SpeedDialChild(
onPressed: () { child: Icon(
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Delete Employee",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
showDeleteWarning(index); showDeleteWarning(index);
}, },
icon: Icon(
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
size: 35,
),
), ),
], ],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHTextField( children: [
controller: fnameController, const SizedBox(height: 10.0),
hintText: "First Name", MIHTextField(
editable: false, controller: fnameController,
required: true, hintText: "First Name",
), editable: false,
const SizedBox(height: 10.0), required: true,
MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: typeController,
hintText: "Title",
dropdownOptions: const ["Doctor", "Assistant"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: accessController,
hintText: "Access",
dropdownOptions: const ["Full", "Partial"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 15.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Update",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (isRequiredFieldsCaptured()) {
updateEmployeeAPICall(index);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
), ),
) const SizedBox(height: 10.0),
], MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: typeController,
hintText: "Title",
dropdownOptions: const ["Doctor", "Assistant"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: accessController,
hintText: "Access",
dropdownOptions: const ["Full", "Partial"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 15.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Update",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (isRequiredFieldsCaptured()) {
updateEmployeeAPICall(index);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
),
)
],
),
), ),
); );
} }

View File

@@ -4,7 +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_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_dropdown_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_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_error_message.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_components/mih_pop_up_messages/mih_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart';
@@ -124,70 +124,71 @@ class _BuildUserListState extends State<BuildUserList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Add Employee", windowTitle: "Add Employee",
windowBody: [ windowBody: Column(
const SizedBox(height: 10.0), children: [
MIHTextField( const SizedBox(height: 10.0),
controller: fnameController, MIHTextField(
hintText: "Username Name", controller: fnameController,
editable: false, hintText: "Username Name",
required: true, editable: false,
), required: true,
const SizedBox(height: 10.0),
MIHTextField(
controller: lnameController,
hintText: "Email",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: typeController,
hintText: "Title",
dropdownOptions: const ["Doctor", "Assistant"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: accessController,
hintText: "Access",
dropdownOptions: const ["Full", "Partial"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 15.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Add",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (isRequiredFieldsCaptured()) {
createBusinessUserAPICall(index);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(
errorType: "Input Error");
},
);
}
},
), ),
), const SizedBox(height: 10.0),
const SizedBox(height: 10.0), MIHTextField(
], controller: lnameController,
windowTools: [], hintText: "Email",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: typeController,
hintText: "Title",
dropdownOptions: const ["Doctor", "Assistant"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: accessController,
hintText: "Access",
dropdownOptions: const ["Full", "Partial"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 15.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Add",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (isRequiredFieldsCaptured()) {
createBusinessUserAPICall(index);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(
errorType: "Input Error");
},
);
}
},
),
),
const SizedBox(height: 10.0),
],
),
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
})); }));

View File

@@ -1,7 +1,7 @@
import 'package:mzansi_innovation_hub/mih_apis/mih_file_api.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_file_api.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.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_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details.dart';
@@ -46,7 +46,7 @@ class _MzansiBusinessProfileState extends State<MzansiBusinessProfile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),
@@ -59,8 +59,8 @@ class _MzansiBusinessProfileState extends State<MzansiBusinessProfile> {
); );
} }
MihAppAction getAction() { MihPackageAction getAction() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -70,7 +70,7 @@ class _MzansiBusinessProfileState extends State<MzansiBusinessProfile> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.business)] = () { temp[const Icon(Icons.business)] = () {
setState(() { setState(() {
@@ -97,7 +97,7 @@ class _MzansiBusinessProfileState extends State<MzansiBusinessProfile> {
_selcetedIndex = 3; _selcetedIndex = 3;
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -21,7 +21,7 @@ class MzansiBusinessProfileTile extends StatefulWidget {
class _MzansiBusinessProfileTileState extends State<MzansiBusinessProfileTile> { class _MzansiBusinessProfileTileState extends State<MzansiBusinessProfileTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/business-profile/manage', '/business-profile/manage',

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -22,7 +22,7 @@ class _MzansiSetupBusinessProfileTileState
extends State<MzansiSetupBusinessProfileTile> { extends State<MzansiSetupBusinessProfileTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/business-profile/set-up', '/business-profile/set-up',

View File

@@ -7,8 +7,8 @@ import 'package:mzansi_innovation_hub/mih_apis/mih_location_api.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_button.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_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_layout/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_app_alert.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.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_error_message.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart';
@@ -91,7 +91,7 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return MihAppAlert( return MihPackageAlert(
alertIcon: Icon( alertIcon: Icon(
Icons.warning_rounded, Icons.warning_rounded,
color: MzanziInnovationHub.of(context)!.theme.errorColor(), color: MzanziInnovationHub.of(context)!.theme.errorColor(),
@@ -233,7 +233,7 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(context), bodyItem: getBody(context),
); );

View File

@@ -8,7 +8,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_file_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_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_layout/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_circle_avatar.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.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_error_message.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';
@@ -322,7 +322,7 @@ class _MihBusinessProfileState extends State<MihBusinessProfile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -3,7 +3,7 @@ import 'dart:convert';
import 'package:mzansi_innovation_hub/main.dart'; 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_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-app_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_pop_up_messages/mih_error_message.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'; 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';
@@ -91,7 +91,7 @@ class _MihBusinessUserSearchState extends State<MihBusinessUserSearch> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -2,7 +2,7 @@ import 'dart:convert';
import 'package:mzansi_innovation_hub/main.dart'; 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_layout/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_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/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
@@ -74,7 +74,7 @@ class _MihMyBusinessTeamState extends State<MihMyBusinessTeam> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -7,8 +7,8 @@ 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_dropdown_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_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_layout/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_app_alert.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_image_display.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_image_display.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_error_message.dart';
@@ -126,7 +126,7 @@ class _MihMyBusinessUserState extends State<MihMyBusinessUser> {
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return MihAppAlert( return MihPackageAlert(
alertIcon: Icon( alertIcon: Icon(
Icons.warning_rounded, Icons.warning_rounded,
color: MzanziInnovationHub.of(context)!.theme.errorColor(), color: MzanziInnovationHub.of(context)!.theme.errorColor(),
@@ -205,7 +205,7 @@ class _MihMyBusinessUserState extends State<MihMyBusinessUser> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -1,13 +1,14 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:supertokens_flutter/http.dart' as http; import 'package:supertokens_flutter/http.dart' as http;
import '../../../../main.dart'; import '../../../../main.dart';
import '../../../../mih_components/mih_inputs_and_buttons/mih_button.dart'; import '../../../../mih_components/mih_inputs_and_buttons/mih_button.dart';
import '../../../../mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart'; import '../../../../mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart';
import '../../../../mih_components/mih_inputs_and_buttons/mih_text_input.dart'; import '../../../../mih_components/mih_inputs_and_buttons/mih_text_input.dart';
import '../../../../mih_components/mih_layout/mih_window.dart';
import '../../../../mih_components/mih_pop_up_messages/mih_delete_message.dart'; import '../../../../mih_components/mih_pop_up_messages/mih_delete_message.dart';
import '../../../../mih_components/mih_pop_up_messages/mih_error_message.dart'; import '../../../../mih_components/mih_pop_up_messages/mih_error_message.dart';
import '../../../../mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import '../../../../mih_components/mih_pop_up_messages/mih_loading_circle.dart';
@@ -150,80 +151,92 @@ class _BuildEmployeeListState extends State<BuildEmployeeList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Employee Details", windowTitle: "Employee Details",
windowTools: [ menuOptions: [
IconButton( SpeedDialChild(
onPressed: () { child: Icon(
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Delete Employee",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
showDeleteWarning(index); showDeleteWarning(index);
}, },
icon: Icon(
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
size: 35,
),
), ),
], ],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHTextField( children: [
controller: fnameController, const SizedBox(height: 10.0),
hintText: "First Name", MIHTextField(
editable: false, controller: fnameController,
required: true, hintText: "First Name",
), editable: false,
const SizedBox(height: 10.0), required: true,
MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: typeController,
hintText: "Title",
dropdownOptions: const ["Doctor", "Assistant"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: accessController,
hintText: "Access",
dropdownOptions: const ["Full", "Partial"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 15.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Update",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (isRequiredFieldsCaptured()) {
updateEmployeeAPICall(index);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
), ),
) const SizedBox(height: 10.0),
], MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: typeController,
hintText: "Title",
dropdownOptions: const ["Doctor", "Assistant"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: accessController,
hintText: "Access",
dropdownOptions: const ["Full", "Partial"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 15.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Update",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (isRequiredFieldsCaptured()) {
updateEmployeeAPICall(index);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
),
)
],
),
), ),
); );
// showDialog( // showDialog(

View File

@@ -1,13 +1,13 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:supertokens_flutter/http.dart' as http; import 'package:supertokens_flutter/http.dart' as http;
import '../../../../main.dart'; import '../../../../main.dart';
import '../../../../mih_components/mih_inputs_and_buttons/mih_button.dart'; import '../../../../mih_components/mih_inputs_and_buttons/mih_button.dart';
import '../../../../mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart'; import '../../../../mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart';
import '../../../../mih_components/mih_inputs_and_buttons/mih_text_input.dart'; import '../../../../mih_components/mih_inputs_and_buttons/mih_text_input.dart';
import '../../../../mih_components/mih_layout/mih_window.dart';
import '../../../../mih_components/mih_pop_up_messages/mih_error_message.dart'; import '../../../../mih_components/mih_pop_up_messages/mih_error_message.dart';
import '../../../../mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import '../../../../mih_components/mih_pop_up_messages/mih_loading_circle.dart';
import '../../../../mih_components/mih_pop_up_messages/mih_success_message.dart'; import '../../../../mih_components/mih_pop_up_messages/mih_success_message.dart';
@@ -125,188 +125,74 @@ class _BuildUserListState extends State<BuildUserList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Add Employee", windowTitle: "Add Employee",
windowBody: [ windowBody: Column(
const SizedBox(height: 10.0), children: [
MIHTextField( const SizedBox(height: 10.0),
controller: fnameController, MIHTextField(
hintText: "Username Name", controller: fnameController,
editable: false, hintText: "Username Name",
required: true, editable: false,
), required: true,
const SizedBox(height: 10.0),
MIHTextField(
controller: lnameController,
hintText: "Email",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: typeController,
hintText: "Title",
dropdownOptions: const ["Doctor", "Assistant"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: accessController,
hintText: "Access",
dropdownOptions: const ["Full", "Partial"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 15.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Add",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (isRequiredFieldsCaptured()) {
createBusinessUserAPICall(index);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(
errorType: "Input Error");
},
);
}
},
), ),
), const SizedBox(height: 10.0),
const SizedBox(height: 10.0), MIHTextField(
], controller: lnameController,
windowTools: [], hintText: "Email",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: typeController,
hintText: "Title",
dropdownOptions: const ["Doctor", "Assistant"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 10.0),
MIHDropdownField(
controller: accessController,
hintText: "Access",
dropdownOptions: const ["Full", "Partial"],
required: true,
editable: true,
enableSearch: false,
),
const SizedBox(height: 15.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Add",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (isRequiredFieldsCaptured()) {
createBusinessUserAPICall(index);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(
errorType: "Input Error");
},
);
}
},
),
),
const SizedBox(height: 10.0),
],
),
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
})); }));
// showDialog(
// context: context,
// barrierDismissible: false,
// builder: (context) => Dialog(
// child: Stack(
// children: [
// Container(
// padding: const EdgeInsets.all(10.0),
// width: 700.0,
// //height: 475.0,
// decoration: BoxDecoration(
// color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
// borderRadius: BorderRadius.circular(25.0),
// border: Border.all(
// color:
// MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// width: 5.0),
// ),
// child: SingleChildScrollView(
// padding: const EdgeInsets.symmetric(horizontal: 10),
// child: Column(
// mainAxisSize: MainAxisSize.min,
// children: [
// Text(
// "Add Employee",
// textAlign: TextAlign.center,
// style: TextStyle(
// color: MzanziInnovationHub.of(context)!
// .theme
// .secondaryColor(),
// fontSize: 35.0,
// fontWeight: FontWeight.bold,
// ),
// ),
// const SizedBox(height: 25.0),
// MIHTextField(
// controller: fnameController,
// hintText: "Username Name",
// editable: false,
// required: true,
// ),
// const SizedBox(height: 10.0),
// MIHTextField(
// controller: lnameController,
// hintText: "Email",
// editable: false,
// required: true,
// ),
// const SizedBox(height: 10.0),
// MIHDropdownField(
// controller: typeController,
// hintText: "Title",
// dropdownOptions: const ["Doctor", "Assistant"],
// required: true,
// editable: true,
// ),
// const SizedBox(height: 10.0),
// MIHDropdownField(
// controller: accessController,
// hintText: "Access",
// dropdownOptions: const ["Full", "Partial"],
// required: true,
// editable: true,
// ),
// const SizedBox(height: 30.0),
// SizedBox(
// width: 300,
// height: 50,
// child: MIHButton(
// buttonText: "Add",
// buttonColor: MzanziInnovationHub.of(context)!
// .theme
// .secondaryColor(),
// textColor: MzanziInnovationHub.of(context)!
// .theme
// .primaryColor(),
// onTap: () {
// if (isRequiredFieldsCaptured()) {
// createBusinessUserAPICall(index);
// } else {
// showDialog(
// context: context,
// builder: (context) {
// return const MIHErrorMessage(
// errorType: "Input Error");
// },
// );
// }
// },
// ),
// )
// ],
// ),
// ),
// ),
// Positioned(
// top: 5,
// right: 5,
// width: 50,
// height: 50,
// child: IconButton(
// onPressed: () {
// Navigator.pop(context);
// },
// icon: Icon(
// Icons.close,
// color: MzanziInnovationHub.of(context)!.theme.errorColor(),
// size: 35,
// ),
// ),
// ),
// ],
// ),
// ),
// );
} }
@override @override

View File

@@ -1,6 +1,6 @@
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_settings.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_settings.dart';
@@ -22,7 +22,7 @@ class _MzansiProfileState extends State<MzansiProfile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),
@@ -35,8 +35,8 @@ class _MzansiProfileState extends State<MzansiProfile> {
); );
} }
MihAppAction getAction() { MihPackageAction getAction() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -46,7 +46,7 @@ class _MzansiProfileState extends State<MzansiProfile> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.perm_identity)] = () { temp[const Icon(Icons.perm_identity)] = () {
setState(() { setState(() {
@@ -58,7 +58,7 @@ class _MzansiProfileState extends State<MzansiProfile> {
_selcetedIndex = 1; _selcetedIndex = 1;
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
@@ -25,7 +25,7 @@ class _MzansiProfileTileState extends State<MzansiProfileTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
// ImageProvider logo = MzanziInnovationHub.of(context)!.theme.logoImage(); // ImageProvider logo = MzanziInnovationHub.of(context)!.theme.logoImage();
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/mzansi-profile', '/mzansi-profile',

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
@@ -24,7 +24,7 @@ class MzansiSetupProfileTile extends StatefulWidget {
class _MzansiSetupProfileTileState extends State<MzansiSetupProfileTile> { class _MzansiSetupProfileTileState extends State<MzansiSetupProfileTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/mzansi-profile', '/mzansi-profile',

View File

@@ -7,8 +7,8 @@ import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_
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_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_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_layout/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_app_alert.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.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_error_message.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart';
@@ -44,7 +44,7 @@ class _MihPersonalProfileState extends State<MihPersonalProfile> {
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return MihAppAlert( return MihPackageAlert(
alertIcon: Icon( alertIcon: Icon(
Icons.warning_amber_rounded, Icons.warning_amber_rounded,
size: 100, size: 100,
@@ -252,7 +252,7 @@ class _MihPersonalProfileState extends State<MihPersonalProfile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -2,8 +2,8 @@ import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_user_apis.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_user_apis.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_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_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_app_alert.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@@ -22,7 +22,7 @@ class MihPersonalSettings extends StatefulWidget {
class _MihPersonalSettingsState extends State<MihPersonalSettings> { class _MihPersonalSettingsState extends State<MihPersonalSettings> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody(borderOn: true, bodyItem: getBody()); return MihPackageToolBody(borderOn: true, bodyItem: getBody());
} }
void deleteAccountPopUp(BuildContext ctxtd) { void deleteAccountPopUp(BuildContext ctxtd) {
@@ -30,7 +30,7 @@ class _MihPersonalSettingsState extends State<MihPersonalSettings> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MihAppAlert( return MihPackageAlert(
alertIcon: Icon( alertIcon: Icon(
Icons.warning_amber_rounded, Icons.warning_amber_rounded,
size: 100, size: 100,

View File

@@ -4,10 +4,8 @@ import 'package:mzansi_innovation_hub/mih_apis/mih_mzansi_wallet_apis.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_button.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_number_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_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_alert.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.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_error_message.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
@@ -50,85 +48,86 @@ class _BuildLoyaltyCardListState extends State<BuildLoyaltyCardList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Edit Loyalty Card", windowTitle: "Edit Loyalty Card",
windowTools: const [
SizedBox(width: 35),
],
onWindowTapClose: () { onWindowTapClose: () {
_cardNumberController.clear(); _cardNumberController.clear();
_nicknameController.clear(); _nicknameController.clear();
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHTextField( children: [
controller: _nicknameController, const SizedBox(height: 10),
hintText: "Card Title", MIHTextField(
editable: true, controller: _nicknameController,
required: false, hintText: "Card Title",
), editable: true,
const SizedBox(height: 10), required: false,
Row( ),
mainAxisAlignment: MainAxisAlignment.center, const SizedBox(height: 10),
crossAxisAlignment: CrossAxisAlignment.center, Row(
mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center,
children: [ crossAxisAlignment: CrossAxisAlignment.center,
Flexible( mainAxisSize: MainAxisSize.max,
child: MIHNumberField( children: [
controller: _cardNumberController, Flexible(
hintText: "Card Number", child: MIHNumberField(
editable: true, controller: _cardNumberController,
required: true, hintText: "Card Number",
enableDecimal: false, editable: true,
required: true,
enableDecimal: false,
),
), ),
), const SizedBox(width: 10),
const SizedBox(width: 10), MIHButton(
MIHButton( onTap: () async {
onTap: () async { openscanner();
openscanner(); },
buttonText: "Scan",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
],
),
const SizedBox(height: 15),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
onTap: () {
if (_cardNumberController.text == "") {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
} else {
MIHMzansiWalletApis.updateLoyaltyCardAPICall(
widget.signedInUser,
widget.cardList[index].idloyalty_cards,
widget.cardList[index].favourite,
widget.cardList[index].priority_index,
_nicknameController.text,
_cardNumberController.text,
0,
ctxt,
);
}
}, },
buttonText: "Scan", buttonText: "Update",
buttonColor: buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(), MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(), MzanziInnovationHub.of(context)!.theme.primaryColor(),
), ),
],
),
const SizedBox(height: 15),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
onTap: () {
if (_cardNumberController.text == "") {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
} else {
MIHMzansiWalletApis.updateLoyaltyCardAPICall(
widget.signedInUser,
widget.cardList[index].idloyalty_cards,
widget.cardList[index].favourite,
widget.cardList[index].priority_index,
_nicknameController.text,
_cardNumberController.text,
0,
ctxt,
);
}
},
buttonText: "Update",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
), ),
), ],
], ),
), ),
); );
} }
@@ -157,7 +156,7 @@ class _BuildLoyaltyCardListState extends State<BuildLoyaltyCardList> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MihAppAlert( return MihPackageAlert(
alertIcon: Icon( alertIcon: Icon(
Icons.favorite, Icons.favorite,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
@@ -213,7 +212,7 @@ class _BuildLoyaltyCardListState extends State<BuildLoyaltyCardList> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MihAppAlert( return MihPackageAlert(
alertIcon: Icon( alertIcon: Icon(
Icons.favorite_border, Icons.favorite_border,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
@@ -276,102 +275,82 @@ class _BuildLoyaltyCardListState extends State<BuildLoyaltyCardList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MihAppWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: widget.cardList[index].shop_name.toUpperCase(), windowTitle: widget.cardList[index].shop_name.toUpperCase(),
windowTools: Row( menuOptions: [
children: [ SpeedDialChild(
Padding( child: widget.cardList[index].favourite == ""
padding: const EdgeInsets.only(top: 5.0), ? Icon(
child: MihFloatingMenu( Icons.favorite,
animatedIcon: AnimatedIcons.menu_close, color:
direction: SpeedDialDirection.down, MzanziInnovationHub.of(context)!.theme.primaryColor(),
children: [ )
SpeedDialChild( : Icon(
child: widget.cardList[index].favourite == "" Icons.favorite_border,
? Icon( color:
Icons.favorite, MzanziInnovationHub.of(context)!.theme.primaryColor(),
color: MzanziInnovationHub.of(context)!
.theme
.primaryColor(),
)
: Icon(
Icons.favorite_border,
color: MzanziInnovationHub.of(context)!
.theme
.primaryColor(),
),
label: widget.cardList[index].favourite == ""
? "Add to Favourite"
: "Remove from Favourite",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
if (widget.cardList[index].favourite == "") {
addToFavCardWindow(context, index);
} else {
removeFromFavCardWindow(context, index);
}
},
), ),
SpeedDialChild( label: widget.cardList[index].favourite == ""
child: Icon( ? "Add to Favourite"
Icons.edit, : "Remove from Favourite",
color: labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(), MzanziInnovationHub.of(context)!.theme.successColor(),
), labelStyle: TextStyle(
label: "Edit Card Details", color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
labelBackgroundColor: fontWeight: FontWeight.bold,
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
setState(() {
_cardNumberController.text =
widget.cardList[index].card_number;
_nicknameController.text =
widget.cardList[index].nickname;
});
editCardWindow(context, index);
},
),
SpeedDialChild(
child: Icon(
Icons.delete,
color:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Delete Card",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
deleteCardWindow(context, index);
},
),
],
),
), ),
], backgroundColor:
), MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
if (widget.cardList[index].favourite == "") {
addToFavCardWindow(context, index);
} else {
removeFromFavCardWindow(context, index);
}
},
),
SpeedDialChild(
child: Icon(
Icons.edit,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Edit Card Details",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
setState(() {
_cardNumberController.text = widget.cardList[index].card_number;
_nicknameController.text = widget.cardList[index].nickname;
});
editCardWindow(context, index);
},
),
SpeedDialChild(
child: Icon(
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Delete Card",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
deleteCardWindow(context, index);
},
),
],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },

View File

@@ -1,6 +1,6 @@
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/package_tools/mih_card_favourites.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/package_tools/mih_card_favourites.dart';
import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/package_tools/mih_cards.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/package_tools/mih_cards.dart';
@@ -32,7 +32,7 @@ class _MihWalletState extends State<MihWallet> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),
@@ -46,8 +46,8 @@ class _MihWalletState extends State<MihWallet> {
); );
} }
MihAppAction getAction() { MihPackageAction getAction() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -57,7 +57,7 @@ class _MihWalletState extends State<MihWallet> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.card_membership)] = () { temp[const Icon(Icons.card_membership)] = () {
setState(() { setState(() {
@@ -70,7 +70,7 @@ class _MihWalletState extends State<MihWallet> {
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -22,7 +22,7 @@ class MihWalletTile extends StatefulWidget {
class _MihWalletTileState extends State<MihWalletTile> { class _MihWalletTileState extends State<MihWalletTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/mzansi-wallet', '/mzansi-wallet',

View File

@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_mzansi_wallet_apis.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_mzansi_wallet_apis.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-app_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_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_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:mzansi_innovation_hub/mih_objects/loyalty_card.dart'; import 'package:mzansi_innovation_hub/mih_objects/loyalty_card.dart';
@@ -33,7 +33,7 @@ class _MihCardFavouritesState extends State<MihCardFavourites> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -7,9 +7,9 @@ import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_search_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_inputs_and_buttons/mih_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_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_layout/mih_window.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-app_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_error_message.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_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
@@ -81,21 +81,9 @@ class _MihCardsState extends State<MihCards> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Add New Loyalty Card", windowTitle: "Add New Loyalty Card",
windowTools: const [
SizedBox(width: 35),
// IconButton(
// onPressed: () {
// //Delete card API Call
// },
// icon: Icon(
// Icons.delete,
// color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// ),
// ),
],
onWindowTapClose: () { onWindowTapClose: () {
shopController.clear(); shopController.clear();
cardNumberController.clear(); cardNumberController.clear();
@@ -103,145 +91,148 @@ class _MihCardsState extends State<MihCards> {
shopName.value = ""; shopName.value = "";
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHDropdownField( children: [
controller: shopController, MIHDropdownField(
hintText: "Shop Name", controller: shopController,
dropdownOptions: const [ hintText: "Shop Name",
"+More", dropdownOptions: const [
"Apple Tree", "+More",
"Auchan", "Apple Tree",
"Best Before", "Auchan",
"Big Save", "Best Before",
"Boxer", "Big Save",
"BP", "Boxer",
"Builders Warehouse", "BP",
"Checkers", "Builders Warehouse",
"Choppies", "Checkers",
"Clicks", "Choppies",
"Continente", "Clicks",
"Cotton:On", "Continente",
"Carrefour", "Cotton:On",
"Dis-Chem", "Carrefour",
"Edgars", "Dis-Chem",
"Eskom", "Edgars",
"Exclusive Books", "Eskom",
"Fresh Stop", "Exclusive Books",
"Fresmart", "Fresh Stop",
"Infinity", "Fresmart",
"Jet", "Infinity",
"Justrite", "Jet",
"Kero", "Justrite",
"Leroy Merlin", "Kero",
"Makro", "Leroy Merlin",
"Naivas", "Makro",
"OK Foods", "Naivas",
"Panarottis", "OK Foods",
"Pick n Pay", "Panarottis",
"PnA", "Pick n Pay",
"PQ Clothing", "PnA",
"Rage", "PQ Clothing",
"Sefalana", "Rage",
"Sasol", "Sefalana",
"Shell", "Sasol",
"Shoprite", "Shell",
"Signature Cosmetics & Fragrances", "Shoprite",
"Spar", "Signature Cosmetics & Fragrances",
"Spur", "Spar",
"TFG Group", "Spur",
"Toys R Us", "TFG Group",
"Woermann Brock", "Toys R Us",
"Woolworths" "Woermann Brock",
], "Woolworths"
required: true, ],
editable: true, required: true,
enableSearch: false, editable: true,
), enableSearch: false,
ValueListenableBuilder( ),
valueListenable: shopName, ValueListenableBuilder(
builder: (BuildContext context, String value, Widget? child) { valueListenable: shopName,
return Visibility( builder: (BuildContext context, String value, Widget? child) {
visible: value != "", return Visibility(
child: Column( visible: value != "",
children: [ child: Column(
const SizedBox(height: 10), children: [
MihCardDisplay( const SizedBox(height: 10),
shopName: shopName.value, nickname: "", height: 200), MihCardDisplay(
], shopName: shopName.value, nickname: "", height: 200),
],
),
);
},
),
const SizedBox(height: 10),
MIHTextField(
controller: _nicknameController,
hintText: "Card Title",
editable: true,
required: false,
),
const SizedBox(height: 10),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: [
Flexible(
child: MIHNumberField(
controller: cardNumberController,
hintText: "Card Number",
editable: true,
required: true,
enableDecimal: false,
),
), ),
); const SizedBox(width: 10),
}, MIHButton(
), onTap: () async {
const SizedBox(height: 10), openscanner();
MIHTextField( },
controller: _nicknameController, buttonText: "Scan",
hintText: "Card Title", buttonColor:
editable: true, MzanziInnovationHub.of(context)!.theme.secondaryColor(),
required: false, textColor:
), MzanziInnovationHub.of(context)!.theme.primaryColor(),
const SizedBox(height: 10),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: [
Flexible(
child: MIHNumberField(
controller: cardNumberController,
hintText: "Card Number",
editable: true,
required: true,
enableDecimal: false,
), ),
), ],
const SizedBox(width: 10), ),
MIHButton( const SizedBox(height: 15),
onTap: () async { SizedBox(
openscanner(); width: 300,
height: 50,
child: MIHButton(
onTap: () {
if (shopController.text == "" ||
cardNumberController.text == "") {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
} else {
MIHMzansiWalletApis.addLoyaltyCardAPICall(
widget.signedInUser,
widget.signedInUser.app_id,
shopController.text,
cardNumberController.text,
"",
0,
_nicknameController.text,
0,
context,
);
}
}, },
buttonText: "Scan", buttonText: "Add",
buttonColor: buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(), MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(), MzanziInnovationHub.of(context)!.theme.primaryColor(),
), ),
],
),
const SizedBox(height: 15),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
onTap: () {
if (shopController.text == "" ||
cardNumberController.text == "") {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
} else {
MIHMzansiWalletApis.addLoyaltyCardAPICall(
widget.signedInUser,
widget.signedInUser.app_id,
shopController.text,
cardNumberController.text,
"",
0,
_nicknameController.text,
0,
context,
);
}
},
buttonText: "Add",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
), ),
), ],
], ),
), ),
); );
} }
@@ -269,7 +260,7 @@ class _MihCardsState extends State<MihCards> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -6,7 +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_date_input.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_date_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_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_inputs_and_buttons/mih_time_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_error_message.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_warning_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_warning_message.dart';
@@ -167,75 +167,77 @@ class _BuildPatientsListState extends State<BuildMihPatientSearchList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Patient Appointment", windowTitle: "Patient Appointment",
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHTextField( children: [
controller: idController, MIHTextField(
hintText: "ID No.", controller: idController,
editable: false, hintText: "ID No.",
required: true, editable: false,
), required: true,
const SizedBox(height: 10.0),
MIHTextField(
controller: fnameController,
hintText: "First Name",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDateField(
controller: dateController,
lableText: "Date",
required: true,
),
const SizedBox(height: 10.0),
MIHTimeField(
controller: timeController,
lableText: "Time",
required: true,
),
const SizedBox(height: 30.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Book",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
//print("here1");
bool filled = isAppointmentFieldsFilled();
//print("fields filled: $filled");
if (filled) {
//print("here2");
submitApointment(index);
//print("here3");
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
), ),
) const SizedBox(height: 10.0),
], MIHTextField(
controller: fnameController,
hintText: "First Name",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDateField(
controller: dateController,
lableText: "Date",
required: true,
),
const SizedBox(height: 10.0),
MIHTimeField(
controller: timeController,
lableText: "Time",
required: true,
),
const SizedBox(height: 30.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Book",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
//print("here1");
bool filled = isAppointmentFieldsFilled();
//print("fields filled: $filled");
if (filled) {
//print("here2");
submitApointment(index);
//print("here3");
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
),
)
],
),
), ),
); );
} }
@@ -321,226 +323,230 @@ class _BuildPatientsListState extends State<BuildMihPatientSearchList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Patient Profile", windowTitle: "Patient Profile",
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHTextField( children: [
controller: idController, MIHTextField(
hintText: "ID No.", controller: idController,
editable: false, hintText: "ID No.",
required: true, editable: false,
), required: true,
const SizedBox(height: 10.0),
MIHTextField(
controller: fnameController,
hintText: "First Name",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: accessStatusController,
hintText: "Access Status",
editable: false,
required: true,
),
const SizedBox(height: 20.0),
Visibility(
visible: !hasAccess,
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
"Important Notice: Requesting Patient Profile Access",
style: TextStyle(
fontWeight: FontWeight.bold,
color: MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
Text(
"You are about to request access to a patient's profile. Please be aware of the following important points:",
style: TextStyle(
fontWeight: FontWeight.normal,
color: MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
SizedBox(
width: 600,
child: Text(
"1. Permanent Access: Once the patient accepts your access request, it will become permanent.",
style: TextStyle(
fontWeight: FontWeight.normal,
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
),
SizedBox(
width: 600,
child: Text(
"2. Shared Information: Any updates you make to the patient's profile will be visible to others who have access to the profile.",
style: TextStyle(
fontWeight: FontWeight.normal,
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
),
SizedBox(
width: 600,
child: Text(
"3. Irreversible Access: Once granted, you cannot revoke your access to the patient's profile.",
style: TextStyle(
fontWeight: FontWeight.normal,
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
),
Text(
"By pressing the \"Request Access\" button you accept the above terms.\n",
style: TextStyle(
fontWeight: FontWeight.bold,
color: MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
],
), ),
), const SizedBox(height: 10.0),
// const SizedBox(height: 15.0), MIHTextField(
Wrap(runSpacing: 10, spacing: 10, children: [ controller: fnameController,
// Visibility( hintText: "First Name",
// visible: hasAccess, editable: false,
// child: SizedBox( required: true,
// width: 300,
// height: 50,
// child: MIHButton(
// buttonText: "Book Appointment",
// buttonColor:
// MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// textColor:
// MzanziInnovationHub.of(context)!.theme.primaryColor(),
// onTap: () {
// if (hasAccess) {
// appointmentPopUp(index);
// } else {
// noAccessWarning();
// }
// },
// ),
// ),
// ),
Visibility(
visible: hasAccess,
child: SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "View Patient Profile",
buttonColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (hasAccess) {
Navigator.of(context)
.pushNamed('/patient-manager/patient',
arguments: PatientViewArguments(
widget.signedInUser,
widget.patients[index],
widget.businessUser,
widget.business,
"business",
));
} else {
noAccessWarning();
}
},
),
),
), ),
const SizedBox(height: 10.0),
MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: accessStatusController,
hintText: "Access Status",
editable: false,
required: true,
),
const SizedBox(height: 20.0),
Visibility( Visibility(
visible: !hasAccess && accessStatus == "No Access", visible: !hasAccess,
child: SizedBox( child: Column(
width: 300, mainAxisSize: MainAxisSize.max,
height: 50, mainAxisAlignment: MainAxisAlignment.start,
child: MIHButton( children: [
buttonText: "Request Access", Text(
buttonColor: "Important Notice: Requesting Patient Profile Access",
MzanziInnovationHub.of(context)!.theme.successColor(), style: TextStyle(
textColor: fontWeight: FontWeight.bold,
MzanziInnovationHub.of(context)!.theme.primaryColor(), color:
onTap: () { MzanziInnovationHub.of(context)!.theme.errorColor(),
//print("Send access Request..."); ),
MIHApiCalls.addPatientAccessAPICall( ),
widget.business!.business_id, Text(
widget.patients[index].app_id, "You are about to request access to a patient's profile. Please be aware of the following important points:",
"patient", style: TextStyle(
widget.business!.Name, fontWeight: FontWeight.normal,
widget.personalSelected, color:
BusinessArguments( MzanziInnovationHub.of(context)!.theme.errorColor(),
widget.signedInUser, ),
widget.businessUser, ),
widget.business, SizedBox(
width: 600,
child: Text(
"1. Permanent Access: Once the patient accepts your access request, it will become permanent.",
style: TextStyle(
fontWeight: FontWeight.normal,
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
), ),
context, ),
); ),
}, SizedBox(
), width: 600,
), child: Text(
), "2. Shared Information: Any updates you make to the patient's profile will be visible to others who have access to the profile.",
Visibility( style: TextStyle(
visible: !hasAccess && accessStatus == "declined", fontWeight: FontWeight.normal,
child: SizedBox( color:
width: 300, MzanziInnovationHub.of(context)!.theme.errorColor(),
height: 50,
child: MIHButton(
buttonText: "Re-apply",
buttonColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
// print("Send rewaply access Request...");
MIHApiCalls.reapplyPatientAccessAPICall(
widget.business!.business_id,
widget.patients[index].app_id,
widget.personalSelected,
BusinessArguments(
widget.signedInUser,
widget.businessUser,
widget.business,
), ),
context, ),
); ),
}, SizedBox(
width: 600,
child: Text(
"3. Irreversible Access: Once granted, you cannot revoke your access to the patient's profile.",
style: TextStyle(
fontWeight: FontWeight.normal,
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
),
Text(
"By pressing the \"Request Access\" button you accept the above terms.\n",
style: TextStyle(
fontWeight: FontWeight.bold,
color:
MzanziInnovationHub.of(context)!.theme.errorColor(),
),
),
],
),
),
// const SizedBox(height: 15.0),
Wrap(runSpacing: 10, spacing: 10, children: [
// Visibility(
// visible: hasAccess,
// child: SizedBox(
// width: 300,
// height: 50,
// child: MIHButton(
// buttonText: "Book Appointment",
// buttonColor:
// MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// textColor:
// MzanziInnovationHub.of(context)!.theme.primaryColor(),
// onTap: () {
// if (hasAccess) {
// appointmentPopUp(index);
// } else {
// noAccessWarning();
// }
// },
// ),
// ),
// ),
Visibility(
visible: hasAccess,
child: SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "View Patient Profile",
buttonColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (hasAccess) {
Navigator.of(context)
.pushNamed('/patient-manager/patient',
arguments: PatientViewArguments(
widget.signedInUser,
widget.patients[index],
widget.businessUser,
widget.business,
"business",
));
} else {
noAccessWarning();
}
},
),
), ),
), ),
), Visibility(
Visibility( visible: !hasAccess && accessStatus == "No Access",
visible: !hasAccess && accessStatus == "pending", child: SizedBox(
child: const SizedBox( width: 300,
width: 500, height: 50,
//height: 50, child: MIHButton(
child: Text( buttonText: "Request Access",
"Patient has not approved access to their profile. Once access has been approved you can book and appointment or view their profile."), buttonColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
//print("Send access Request...");
MIHApiCalls.addPatientAccessAPICall(
widget.business!.business_id,
widget.patients[index].app_id,
"patient",
widget.business!.Name,
widget.personalSelected,
BusinessArguments(
widget.signedInUser,
widget.businessUser,
widget.business,
),
context,
);
},
),
),
), ),
), Visibility(
]) visible: !hasAccess && accessStatus == "declined",
], child: SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Re-apply",
buttonColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
// print("Send rewaply access Request...");
MIHApiCalls.reapplyPatientAccessAPICall(
widget.business!.business_id,
widget.patients[index].app_id,
widget.personalSelected,
BusinessArguments(
widget.signedInUser,
widget.businessUser,
widget.business,
),
context,
);
},
),
),
),
Visibility(
visible: !hasAccess && accessStatus == "pending",
child: const SizedBox(
width: 500,
//height: 50,
child: Text(
"Patient has not approved access to their profile. Once access has been approved you can book and appointment or view their profile."),
),
),
])
],
),
), ),
); );
} }

View File

@@ -5,7 +5,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_date_input.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_date_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_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_inputs_and_buttons/mih_time_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_error_message.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_warning_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_warning_message.dart';
import 'package:mzansi_innovation_hub/mih_env/env.dart'; import 'package:mzansi_innovation_hub/mih_env/env.dart';
@@ -100,75 +100,77 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Patient Appointment", windowTitle: "Patient Appointment",
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHTextField( children: [
controller: idController, MIHTextField(
hintText: "ID No.", controller: idController,
editable: false, hintText: "ID No.",
required: true, editable: false,
), required: true,
const SizedBox(height: 10.0),
MIHTextField(
controller: fnameController,
hintText: "First Name",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDateField(
controller: dateController,
lableText: "Date",
required: true,
),
const SizedBox(height: 10.0),
MIHTimeField(
controller: timeController,
lableText: "Time",
required: true,
),
const SizedBox(height: 30.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Book",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
//print("here1");
bool filled = isAppointmentFieldsFilled();
//print("fields filled: $filled");
if (filled) {
//print("here2");
submitApointment(index);
//print("here3");
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
), ),
) const SizedBox(height: 10.0),
], MIHTextField(
controller: fnameController,
hintText: "First Name",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHDateField(
controller: dateController,
lableText: "Date",
required: true,
),
const SizedBox(height: 10.0),
MIHTimeField(
controller: timeController,
lableText: "Time",
required: true,
),
const SizedBox(height: 30.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Book",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
//print("here1");
bool filled = isAppointmentFieldsFilled();
//print("fields filled: $filled");
if (filled) {
//print("here2");
submitApointment(index);
//print("here3");
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
),
)
],
),
), ),
); );
} }
@@ -214,74 +216,75 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Patient Profile", windowTitle: "Patient Profile",
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHTextField( children: [
controller: idController, MIHTextField(
hintText: "ID No.", controller: idController,
editable: false, hintText: "ID No.",
required: true, editable: false,
), required: true,
const SizedBox(height: 10.0),
MIHTextField(
controller: fnameController,
hintText: "First Name",
editable: false,
required: true,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 30.0),
Wrap(runSpacing: 10, spacing: 10, children: [
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Book Appointment",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
appointmentPopUp(index);
},
),
), ),
SizedBox( const SizedBox(height: 10.0),
width: 300, MIHTextField(
height: 50, controller: fnameController,
child: MIHButton( hintText: "First Name",
buttonText: "View Patient Profile", editable: false,
buttonColor: required: true,
MzanziInnovationHub.of(context)!.theme.successColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
// Navigator.of(context).pop();
Navigator.of(context).pushNamed('/patient-manager/patient',
arguments: PatientViewArguments(
widget.signedInUser,
patientProfile,
widget.businessUser,
widget.business,
"business",
));
},
),
), ),
]) const SizedBox(height: 10.0),
], MIHTextField(
controller: lnameController,
hintText: "Surname",
editable: false,
required: true,
),
const SizedBox(height: 30.0),
Wrap(runSpacing: 10, spacing: 10, children: [
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Book Appointment",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
appointmentPopUp(index);
},
),
),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "View Patient Profile",
buttonColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
// Navigator.of(context).pop();
Navigator.of(context).pushNamed('/patient-manager/patient',
arguments: PatientViewArguments(
widget.signedInUser,
patientProfile,
widget.businessUser,
widget.business,
"business",
));
},
),
),
])
],
),
), ),
); );
} }

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -20,7 +20,7 @@ class PatManagerTile extends StatefulWidget {
class _PatManagerTileState extends State<PatManagerTile> { class _PatManagerTileState extends State<PatManagerTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/patient-manager', '/patient-manager',

View File

@@ -2,7 +2,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_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_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-app_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_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';
@@ -221,7 +221,7 @@ class _MihPatientSearchState extends State<MihPatientSearch> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getPatientSearch(), bodyItem: getPatientSearch(),
); );

View File

@@ -2,7 +2,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_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_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-app_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_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';
@@ -201,7 +201,7 @@ class _MyPatientListState extends State<MyPatientList> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: myPatientListTool(), bodyItem: myPatientListTool(),
); );

View File

@@ -8,9 +8,9 @@ import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_
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_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_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_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_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_error_message.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';
@@ -222,71 +222,73 @@ class _WaitingRoomState extends State<WaitingRoom> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Appointment Type", windowTitle: "Appointment Type",
windowTools: [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
windowBody: [ windowBody: Column(
Text( children: [
question, Text(
style: TextStyle( question,
fontSize: 20, style: TextStyle(
color: fontSize: 20,
MzanziInnovationHub.of(context)!.theme.secondaryColor()), color: MzanziInnovationHub.of(context)!
textAlign: TextAlign.left, .theme
), .secondaryColor()),
const SizedBox(height: 15), textAlign: TextAlign.left,
SizedBox(
width: 500,
height: 50,
child: MIHButton(
onTap: () {
widget.onIndexChange(1);
Navigator.of(context).pop();
},
buttonText: "Existing Patient",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
), ),
), const SizedBox(height: 15),
const SizedBox(height: 10), SizedBox(
SizedBox( width: 500,
width: 500, height: 50,
height: 50, child: MIHButton(
child: MIHButton( onTap: () {
onTap: () { widget.onIndexChange(1);
widget.onIndexChange(2); Navigator.of(context).pop();
Navigator.of(context).pop(); },
}, buttonText: "Existing Patient",
buttonText: "Existing MIH User", buttonColor:
buttonColor: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
MzanziInnovationHub.of(context)!.theme.secondaryColor(), textColor:
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
MzanziInnovationHub.of(context)!.theme.primaryColor(), ),
), ),
), const SizedBox(height: 10),
const SizedBox(height: 10), SizedBox(
SizedBox( width: 500,
width: 500, height: 50,
height: 50, child: MIHButton(
child: MIHButton( onTap: () {
onTap: () { widget.onIndexChange(2);
Navigator.pop(context); Navigator.of(context).pop();
addAppointmentWindow(); },
}, buttonText: "Existing MIH User",
buttonText: "Skeleton Appointment", buttonColor:
buttonColor: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
MzanziInnovationHub.of(context)!.theme.secondaryColor(), textColor:
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
MzanziInnovationHub.of(context)!.theme.primaryColor(), ),
), ),
), const SizedBox(height: 10),
], SizedBox(
width: 500,
height: 50,
child: MIHButton(
onTap: () {
Navigator.pop(context);
addAppointmentWindow();
},
buttonText: "Skeleton Appointment",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
),
],
),
); );
}, },
); );
@@ -297,10 +299,9 @@ class _WaitingRoomState extends State<WaitingRoom> {
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) { builder: (context) {
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Add Appointment", windowTitle: "Add Appointment",
windowTools: [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
_appointmentDateController.clear(); _appointmentDateController.clear();
@@ -309,61 +310,63 @@ class _WaitingRoomState extends State<WaitingRoom> {
_appointmentDescriptionIDController.clear(); _appointmentDescriptionIDController.clear();
_patientController.clear(); _patientController.clear();
}, },
windowBody: [ windowBody: Column(
SizedBox( children: [
// width: 500, SizedBox(
child: MIHTextField( // width: 500,
controller: _appointmentTitleController, child: MIHTextField(
hintText: "Title", controller: _appointmentTitleController,
editable: true, hintText: "Title",
required: true, editable: true,
required: true,
),
), ),
), const SizedBox(height: 10),
const SizedBox(height: 10), SizedBox(
SizedBox( // width: 500,
// width: 500, child: MIHDateField(
child: MIHDateField( controller: _appointmentDateController,
controller: _appointmentDateController, lableText: "Date",
lableText: "Date", required: true,
required: true, ),
), ),
), const SizedBox(height: 10),
const SizedBox(height: 10), SizedBox(
SizedBox( // width: 500,
// width: 500, child: MIHTimeField(
child: MIHTimeField( controller: _appointmentTimeController,
controller: _appointmentTimeController, lableText: "Time",
lableText: "Time", required: true,
required: true, ),
), ),
), const SizedBox(height: 10),
const SizedBox(height: 10), SizedBox(
SizedBox( // width: 500,
// width: 500, height: 250,
height: 250, child: MIHMLTextField(
child: MIHMLTextField( controller: _appointmentDescriptionIDController,
controller: _appointmentDescriptionIDController, hintText: "Description",
hintText: "Description", editable: true,
editable: true, required: true,
required: true, ),
), ),
), const SizedBox(height: 20),
const SizedBox(height: 20), SizedBox(
SizedBox( width: 500,
width: 500, height: 50,
height: 50, child: MIHButton(
child: MIHButton( onTap: () {
onTap: () { addAppointmentCall();
addAppointmentCall(); },
}, buttonText: "Add",
buttonText: "Add", buttonColor:
buttonColor: MzanziInnovationHub.of(context)!.theme.successColor(),
MzanziInnovationHub.of(context)!.theme.successColor(), textColor:
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
MzanziInnovationHub.of(context)!.theme.primaryColor(), ),
), ),
), ],
], ),
); );
}, },
); );
@@ -450,7 +453,7 @@ class _WaitingRoomState extends State<WaitingRoom> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBusinessAppointmentsTool(), bodyItem: getBusinessAppointmentsTool(),
); );

View File

@@ -1,6 +1,6 @@
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_manager/package_tools/mih_patient_search.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_manager/package_tools/mih_patient_search.dart';
import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_manager/package_tools/my_patient_list.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_manager/package_tools/my_patient_list.dart';
@@ -29,7 +29,7 @@ class _PatManagerState extends State<PatManager> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getActionButton(), appActionButton: getActionButton(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),
@@ -42,8 +42,8 @@ class _PatManagerState extends State<PatManager> {
); );
} }
MihAppAction getActionButton() { MihPackageAction getActionButton() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -53,7 +53,7 @@ class _PatManagerState extends State<PatManager> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.calendar_month)] = () { temp[const Icon(Icons.calendar_month)] = () {
setState(() { setState(() {
@@ -72,7 +72,7 @@ class _PatManagerState extends State<PatManager> {
_selcetedIndex = 2; _selcetedIndex = 2;
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );

View File

@@ -6,7 +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_dropdown_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_inputs_and_buttons/mih_search_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_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_error_message.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
@@ -389,10 +389,9 @@ class _ClaimStatementWindowState extends State<ClaimStatementWindow> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Generate Claim/ Statement Document", windowTitle: "Generate Claim/ Statement Document",
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
// medicineController.clear(); // medicineController.clear();
// quantityController.clear(); // quantityController.clear();
@@ -402,9 +401,7 @@ class _ClaimStatementWindowState extends State<ClaimStatementWindow> {
// noRepeatsController.clear(); // noRepeatsController.clear();
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: getWindowBody(),
getWindowBody(),
],
); );
} }
} }

View File

@@ -1,5 +1,5 @@
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_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_objects/icd10_code.dart.dart'; import 'package:mzansi_innovation_hub/mih_objects/icd10_code.dart.dart';
import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_profile/list_builders/build_icd10_code_list.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_profile/list_builders/build_icd10_code_list.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -37,10 +37,9 @@ class _ICD10SearchWindowState extends State<ICD10SearchWindow> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "ICD-10 Search", windowTitle: "ICD-10 Search",
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
// medicineController.clear(); // medicineController.clear();
// quantityController.clear(); // quantityController.clear();
@@ -50,9 +49,7 @@ class _ICD10SearchWindowState extends State<ICD10SearchWindow> {
// noRepeatsController.clear(); // noRepeatsController.clear();
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: getWindowBody(),
getWindowBody(),
],
); );
} }
} }

View File

@@ -1,6 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.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_error_message.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';
@@ -66,47 +65,48 @@ class _MedicineSearchState extends State<MedicineSearch> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MIHWindow( return MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Select Medicine", windowTitle: "Select Medicine",
windowTools: [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
FutureBuilder( children: [
future: futueMeds, FutureBuilder(
builder: (context, snapshot) { future: futueMeds,
if (snapshot.connectionState == ConnectionState.waiting) { builder: (context, snapshot) {
return const SizedBox( if (snapshot.connectionState == ConnectionState.waiting) {
height: 400, return const SizedBox(
child: Mihloadingcircle(), height: 400,
); child: Mihloadingcircle(),
} else if (snapshot.hasData && snapshot.data!.isNotEmpty) { );
final medsList = snapshot.data!; } else if (snapshot.hasData && snapshot.data!.isNotEmpty) {
return SizedBox( final medsList = snapshot.data!;
height: 400, return SizedBox(
child: BuildMedicinesList( height: 400,
contoller: widget.searchVlaue, child: BuildMedicinesList(
medicines: medsList, contoller: widget.searchVlaue,
//searchString: searchString, medicines: medsList,
), //searchString: searchString,
);
} else {
return const SizedBox(
height: 400,
child: Center(
child: Text(
"No Match Found\nPlease close and manually capture medicine",
style: TextStyle(fontSize: 25, color: Colors.grey),
textAlign: TextAlign.center,
), ),
), );
); } else {
} return const SizedBox(
}, height: 400,
), child: Center(
], child: Text(
"No Match Found\nPlease close and manually capture medicine",
style: TextStyle(fontSize: 25, color: Colors.grey),
textAlign: TextAlign.center,
),
),
);
}
},
),
],
),
); );
} }
} }

View File

@@ -1,9 +1,14 @@
import 'dart:async';
import 'package:fl_downloader/fl_downloader.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_claim_statement_generation_api.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_claim_statement_generation_api.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_file_api.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_file_api.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.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_error_message.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_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.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';
@@ -14,6 +19,9 @@ import 'package:mzansi_innovation_hub/mih_objects/claim_statement_file.dart';
import 'package:mzansi_innovation_hub/mih_objects/patients.dart'; import 'package:mzansi_innovation_hub/mih_objects/patients.dart';
import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_profile/list_builders/build_file_view.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_profile/list_builders/build_file_view.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:supertokens_flutter/http.dart' as http;
import 'package:http/http.dart' as http2;
import "package:universal_html/html.dart" as html;
class BuildClaimStatementFileList extends StatefulWidget { class BuildClaimStatementFileList extends StatefulWidget {
final AppUser signedInUser; final AppUser signedInUser;
@@ -45,6 +53,8 @@ class _BuildClaimStatementFileListState
final baseAPI = AppEnviroment.baseApiUrl; final baseAPI = AppEnviroment.baseApiUrl;
final basefile = AppEnviroment.baseFileUrl; final basefile = AppEnviroment.baseFileUrl;
String fileUrl = ""; String fileUrl = "";
int progress = 0;
late StreamSubscription progressStream;
Future<String> getFileUrlApiCall(String filePath) async { Future<String> getFileUrlApiCall(String filePath) async {
String teporaryFileUrl = ""; String teporaryFileUrl = "";
@@ -105,42 +115,149 @@ class _BuildClaimStatementFileListState
); );
} }
String getFileName(String path) {
//print(pdfLink.split(".")[1]);
return path.split("/").last;
}
void printDocument(String link, String path) async {
http2.Response response = await http.get(Uri.parse(link));
var pdfData = response.bodyBytes;
Navigator.of(context).pushNamed(
'/file-veiwer/print-preview',
arguments: PrintPreviewArguments(
pdfData,
getFileName(path),
),
);
}
void nativeFileDownload(String fileLink) async {
var permission = await FlDownloader.requestPermission();
if (permission == StoragePermissionStatus.granted) {
try {
mihLoadingPopUp();
await FlDownloader.download(fileLink);
Navigator.of(context).pop();
} on Exception catch (error) {
Navigator.of(context).pop();
print(error);
}
} else {
print("denied");
}
}
void viewFilePopUp(String fileName, String filePath, int fileID, String url) { void viewFilePopUp(String fileName, String filePath, int fileID, String url) {
bool hasAccessToDelete = false; bool hasAccessToDelete = false;
if (widget.type == "business") { if (widget.type == "business") {
hasAccessToDelete = true; hasAccessToDelete = true;
} }
List<SpeedDialChild>? menuList = [
SpeedDialChild(
child: Icon(
Icons.download,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Download",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor: MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
if (MzanziInnovationHub.of(context)!.theme.getPlatform() == "Web") {
html.window.open(url, 'download');
} else {
nativeFileDownload(url);
}
},
),
];
menuList.add(
SpeedDialChild(
child: Icon(
Icons.print,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Print",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor: MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
printDocument(url, filePath);
},
),
);
menuList.add(
SpeedDialChild(
child: Icon(
Icons.fullscreen,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Full Screen",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor: MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
printDocument(url, filePath);
},
),
);
if (hasAccessToDelete) {
menuList.add(
SpeedDialChild(
child: Icon(
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Delete Document",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
deleteFilePopUp(filePath, fileID);
},
),
);
}
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: true, fullscreen: false,
windowTitle: fileName, windowTitle: fileName,
windowBody: [ windowBody: Column(
BuildFileView( children: [
link: url, BuildFileView(
path: filePath, link: url,
//pdfLink: '${AppEnviroment.baseFileUrl}/mih/$filePath', path: filePath,
), //pdfLink: '${AppEnviroment.baseFileUrl}/mih/$filePath',
const SizedBox(
height: 10,
)
],
windowTools: [
Visibility(
visible: hasAccessToDelete,
child: IconButton(
onPressed: () {
deleteFilePopUp(filePath, fileID);
},
icon: Icon(
size: 35,
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
), ),
), const SizedBox(
], height: 10,
)
],
),
menuOptions: menuList,
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
@@ -148,12 +265,41 @@ class _BuildClaimStatementFileListState
); );
} }
void mihLoadingPopUp() {
showDialog(
context: context,
builder: (context) {
return const Mihloadingcircle();
},
);
}
@override @override
void dispose() { void dispose() {
// TODO: implement dispose // TODO: implement dispose
super.dispose(); super.dispose();
} }
@override
void initState() {
super.initState();
FlDownloader.initialize();
progressStream = FlDownloader.progressStream.listen((event) {
if (event.status == DownloadStatus.successful) {
setState(() {
progress = event.progress;
});
//Navigator.of(context).pop();
print("Progress $progress%: Success Downloading");
FlDownloader.openFile(filePath: event.filePath);
} else if (event.status == DownloadStatus.failed) {
print("Progress $progress%: Error Downloading");
} else if (event.status == DownloadStatus.running) {
print("Progress $progress%: Download Running");
}
});
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (widget.files.isNotEmpty) { if (widget.files.isNotEmpty) {

View File

@@ -6,7 +6,6 @@ import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_core/theme.dart'; import 'package:syncfusion_flutter_core/theme.dart';
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart'; import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';
import "package:universal_html/html.dart" as html;
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:fl_downloader/fl_downloader.dart'; import 'package:fl_downloader/fl_downloader.dart';
@@ -115,149 +114,29 @@ class _BuildFileViewState extends State<BuildFileView> {
//double height = MediaQuery.sizeOf(context).height; //double height = MediaQuery.sizeOf(context).height;
debugPrint(widget.link); debugPrint(widget.link);
if (getExtType(widget.path).toLowerCase() == "pdf") { if (getExtType(widget.path).toLowerCase() == "pdf") {
return Expanded( return SizedBox(
child: Stack( height: 500,
fit: StackFit.expand, child: SfPdfViewerTheme(
children: [ data: SfPdfViewerThemeData(
SfPdfViewerTheme( backgroundColor:
data: SfPdfViewerThemeData( MzanziInnovationHub.of(context)!.theme.primaryColor(),
backgroundColor: ),
MzanziInnovationHub.of(context)!.theme.primaryColor(), child: SfPdfViewer.network(
), widget.link,
child: SfPdfViewer.network( controller: pdfViewerController,
widget.link, interactionMode: PdfInteractionMode.pan,
controller: pdfViewerController, ),
interactionMode: PdfInteractionMode.pan,
),
),
Positioned(
bottom: 10,
right: 10,
width: 50,
height: 50,
child: IconButton.filled(
iconSize: 35,
padding: const EdgeInsets.all(0),
onPressed: () {
printDocument();
},
icon: Icon(
Icons.print,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
),
),
Positioned(
bottom: 10,
left: 10,
width: 50,
height: 50,
child: IconButton.filled(
iconSize: 35,
padding: const EdgeInsets.all(0),
onPressed: () async {
// debugPrint(
// "I'm here ${MzanziInnovationHub.of(context)!.theme.getPlatform()}");
if (MzanziInnovationHub.of(context)!.theme.getPlatform() ==
"Web") {
html.window.open(
widget.link,
// '${AppEnviroment.baseFileUrl}/mih/$filePath',
'download');
} else {
// print("Here");
// var permission = await FlDownloader.requestPermission();
// if (permission == StoragePermissionStatus.granted) {
// await FlDownloader.download(widget.link);
// } else {
// print("denied");
// }
nativeFileDownload(widget.link);
}
},
icon: Icon(
Icons.download,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
),
),
],
), ),
); );
} else { } else {
return Expanded( return SizedBox(
// height: height, height: 500,
// padding: const EdgeInsets.all(10.0), child: InteractiveViewer(
child: Stack( //constrained: true,
fit: StackFit.expand, //clipBehavior: Clip.antiAlias,
children: [ maxScale: 5.0,
InteractiveViewer( //minScale: 0.,
//constrained: true, child: Image.network(widget.link),
//clipBehavior: Clip.antiAlias,
maxScale: 5.0,
//minScale: 0.,
child: Image.network(widget.link),
),
Positioned(
bottom: 10,
right: 10,
width: 50,
height: 50,
child: IconButton.filled(
iconSize: 35,
padding: const EdgeInsets.all(0),
onPressed: () {
//expandImage(width, height);
Navigator.of(context).pushNamed(
'/file-veiwer',
arguments: FileViewArguments(
widget.link,
widget.path,
),
);
},
icon: Icon(
Icons.fullscreen,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
),
),
Positioned(
bottom: 10,
left: 10,
width: 50,
height: 50,
child: IconButton.filled(
iconSize: 35,
padding: const EdgeInsets.all(0),
onPressed: () async {
// debugPrint("I'm here ");
// debugPrint(
// "I'm here ${MzanziInnovationHub.of(context)!.theme.getPlatform()}");
if (MzanziInnovationHub.of(context)!.theme.getPlatform() ==
"Web") {
html.window.open(
widget.link,
// '${AppEnviroment.baseFileUrl}/mih/$filePath',
'download');
} else {
//print("Here");
// var permission = await FlDownloader.requestPermission();
// if (permission == StoragePermissionStatus.granted) {
// await FlDownloader.download(widget.link);
// } else {
// print("denied");
// }
nativeFileDownload(widget.link);
}
},
icon: Icon(
Icons.download,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
),
),
],
), ),
); );
} }

View File

@@ -1,8 +1,11 @@
import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'package:fl_downloader/fl_downloader.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_file_api.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_file_api.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.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_error_message.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';
@@ -17,6 +20,8 @@ import 'package:mzansi_innovation_hub/mih_objects/patients.dart';
import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_profile/list_builders/build_file_view.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_profile/list_builders/build_file_view.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:supertokens_flutter/http.dart' as http; import 'package:supertokens_flutter/http.dart' as http;
import 'package:http/http.dart' as http2;
import "package:universal_html/html.dart" as html;
class BuildFilesList extends StatefulWidget { class BuildFilesList extends StatefulWidget {
final AppUser signedInUser; final AppUser signedInUser;
@@ -46,6 +51,8 @@ class _BuildFilesListState extends State<BuildFilesList> {
final baseAPI = AppEnviroment.baseApiUrl; final baseAPI = AppEnviroment.baseApiUrl;
final basefile = AppEnviroment.baseFileUrl; final basefile = AppEnviroment.baseFileUrl;
String fileUrl = ""; String fileUrl = "";
int progress = 0;
late StreamSubscription progressStream;
Future<String> getFileUrlApiCall(String filePath) async { Future<String> getFileUrlApiCall(String filePath) async {
String teporaryFileUrl = ""; String teporaryFileUrl = "";
@@ -158,147 +165,185 @@ class _BuildFilesListState extends State<BuildFilesList> {
); );
} }
String getFileName(String path) {
//print(pdfLink.split(".")[1]);
return path.split("/").last;
}
void printDocument(String link, String path) async {
http2.Response response = await http.get(Uri.parse(link));
var pdfData = response.bodyBytes;
Navigator.of(context).pushNamed(
'/file-veiwer/print-preview',
arguments: PrintPreviewArguments(
pdfData,
getFileName(path),
),
);
}
void nativeFileDownload(String fileLink) async {
var permission = await FlDownloader.requestPermission();
if (permission == StoragePermissionStatus.granted) {
try {
mihLoadingPopUp();
await FlDownloader.download(fileLink);
Navigator.of(context).pop();
} on Exception catch (error) {
Navigator.of(context).pop();
print(error);
}
} else {
print("denied");
}
}
void viewFilePopUp(String fileName, String filePath, int fileID, String url) { void viewFilePopUp(String fileName, String filePath, int fileID, String url) {
bool hasAccessToDelete = false; bool hasAccessToDelete = false;
if (widget.type == "business") { if (widget.type == "business") {
hasAccessToDelete = true; hasAccessToDelete = true;
} }
List<SpeedDialChild>? menuList = [
SpeedDialChild(
child: Icon(
Icons.download,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Download",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor: MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
if (MzanziInnovationHub.of(context)!.theme.getPlatform() == "Web") {
html.window.open(url, 'download');
} else {
nativeFileDownload(url);
}
},
),
];
if (filePath.split(".").last.toLowerCase() == "pdf") {
menuList.add(
SpeedDialChild(
child: Icon(
Icons.print,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Print",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
printDocument(url, filePath);
},
),
);
menuList.add(
SpeedDialChild(
child: Icon(
Icons.fullscreen,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Full Screen",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
printDocument(url, filePath);
},
),
);
} else {
menuList.add(
SpeedDialChild(
child: Icon(
Icons.fullscreen,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Full Screen",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
Navigator.of(context).pushNamed(
'/file-veiwer',
arguments: FileViewArguments(
url,
filePath,
),
);
},
),
);
}
if (hasAccessToDelete) {
menuList.add(
SpeedDialChild(
child: Icon(
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Delete Document",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
labelStyle: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
deleteFilePopUp(filePath, fileID);
},
),
);
}
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: true, fullscreen: false,
windowTitle: fileName, windowTitle: fileName,
windowBody: [ windowBody: BuildFileView(
BuildFileView( link: url,
link: url, path: filePath,
path: filePath, //pdfLink: '${AppEnviroment.baseFileUrl}/mih/$filePath',
//pdfLink: '${AppEnviroment.baseFileUrl}/mih/$filePath', ),
), menuOptions: menuList,
const SizedBox(
height: 10,
)
],
windowTools: [
Visibility(
visible: hasAccessToDelete,
child: IconButton(
onPressed: () {
deleteFilePopUp(filePath, fileID);
},
icon: Icon(
size: 35,
Icons.delete,
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(),
),
),
),
],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
), ),
); );
// showDialog( }
// context: context,
// barrierDismissible: false, void mihLoadingPopUp() {
// builder: (context) => Dialog( showDialog(
// child: Stack( context: context,
// children: [ builder: (context) {
// Container( return const Mihloadingcircle();
// padding: const EdgeInsets.all(10.0), },
// width: 800.0, );
// //height: 475.0,
// decoration: BoxDecoration(
// color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
// borderRadius: BorderRadius.circular(25.0),
// border: Border.all(
// color:
// MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// width: 5.0),
// ),
// child: Column(
// mainAxisSize: MainAxisSize.min,
// children: [
// const SizedBox(
// height: 25,
// ),
// Text(
// fileName,
// textAlign: TextAlign.center,
// style: TextStyle(
// color: MzanziInnovationHub.of(context)!
// .theme
// .secondaryColor(),
// fontSize: 35.0,
// fontWeight: FontWeight.bold,
// ),
// ),
// const SizedBox(height: 25.0),
// Expanded(
// child: BuildFileView(
// link: url,
// path: filePath,
// //pdfLink: '${AppEnviroment.baseFileUrl}/mih/$filePath',
// )),
// const SizedBox(height: 30.0),
// SizedBox(
// width: 300,
// height: 50,
// child: MIHButton(
// onTap: () {
// html.window.open(
// url,
// // '${AppEnviroment.baseFileUrl}/mih/$filePath',
// 'download');
// },
// buttonText: "Dowload",
// buttonColor: MzanziInnovationHub.of(context)!
// .theme
// .secondaryColor(),
// textColor:
// MzanziInnovationHub.of(context)!.theme.primaryColor(),
// ),
// )
// ],
// ),
// ),
// Positioned(
// top: 5,
// right: 5,
// width: 50,
// height: 50,
// child: IconButton(
// onPressed: () {
// Navigator.pop(context);
// },
// icon: Icon(
// Icons.close,
// color: MzanziInnovationHub.of(context)!.theme.errorColor(),
// size: 35,
// ),
// ),
// ),
// Positioned(
// top: 5,
// left: 5,
// width: 50,
// height: 50,
// child: IconButton(
// onPressed: () {
// deleteFilePopUp(filePath, fileID);
// },
// icon: Icon(
// Icons.delete,
// color:
// MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// ),
// ),
// ),
// ],
// ),
// ),
// );
} }
@override @override
@@ -307,6 +352,26 @@ class _BuildFilesListState extends State<BuildFilesList> {
super.dispose(); super.dispose();
} }
@override
void initState() {
super.initState();
FlDownloader.initialize();
progressStream = FlDownloader.progressStream.listen((event) {
if (event.status == DownloadStatus.successful) {
setState(() {
progress = event.progress;
});
//Navigator.of(context).pop();
print("Progress $progress%: Success Downloading");
FlDownloader.openFile(filePath: event.filePath);
} else if (event.status == DownloadStatus.failed) {
print("Progress $progress%: Error Downloading");
} else if (event.status == DownloadStatus.running) {
print("Progress $progress%: Download Running");
}
});
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (widget.files.isNotEmpty) { if (widget.files.isNotEmpty) {

View File

@@ -1,9 +1,10 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
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_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_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_message.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_error_message.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart';
@@ -136,202 +137,80 @@ class _BuildNotesListState extends State<BuildNotesList> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: true, fullscreen: false,
windowTitle: selectednote.note_name, windowTitle: "Note Details",
windowTools: [ menuOptions: hasAccessToDelete
Visibility( ? [
visible: hasAccessToDelete, SpeedDialChild(
child: IconButton( child: Icon(
onPressed: () { Icons.delete,
deletePatientPopUp(selectednote.idpatient_notes); color:
}, MzanziInnovationHub.of(context)!.theme.primaryColor(),
icon: Icon( ),
Icons.delete, label: "Delete Document",
color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), labelBackgroundColor:
), MzanziInnovationHub.of(context)!.theme.successColor(),
), labelStyle: TextStyle(
), color:
], MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontWeight: FontWeight.bold,
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.successColor(),
onTap: () {
deletePatientPopUp(selectednote.idpatient_notes);
},
),
]
: null,
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHTextField( children: [
controller: businessNameController, const SizedBox(height: 10.0),
hintText: "Office", MIHTextField(
editable: false, controller: businessNameController,
required: false, hintText: "Office",
),
const SizedBox(height: 10.0),
MIHTextField(
controller: userNameController,
hintText: "Created By",
editable: false,
required: false,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: dateController,
hintText: "Created Date",
editable: false,
required: false,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: noteTitleController,
hintText: "Note Title",
editable: false,
required: false,
),
const SizedBox(height: 10.0),
Expanded(
child: MIHMLTextField(
controller: noteTextController,
hintText: "Note Details",
editable: false, editable: false,
required: false, required: false,
), ),
), const SizedBox(height: 10.0),
], MIHTextField(
controller: userNameController,
hintText: "Created By",
editable: false,
required: false,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: dateController,
hintText: "Created Date",
editable: false,
required: false,
),
const SizedBox(height: 10.0),
MIHTextField(
controller: noteTitleController,
hintText: "Note Title",
editable: false,
required: false,
),
const SizedBox(height: 10.0),
SizedBox(
height: 250,
child: MIHMLTextField(
controller: noteTextController,
hintText: "Note Details",
editable: false,
required: false,
),
),
],
),
), ),
); );
// showDialog(
// context: context,
// barrierDismissible: false,
// builder: (context) => Dialog(
// child: Stack(
// children: [
// Container(
// padding: const EdgeInsets.all(15.0),
// width: 700.0,
// //height: 475.0,
// decoration: BoxDecoration(
// color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
// borderRadius: BorderRadius.circular(25.0),
// border: Border.all(
// color:
// MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// width: 5.0),
// ),
// child: Column(
// mainAxisSize: MainAxisSize.max,
// children: [
// const SizedBox(
// height: 25,
// ),
// Text(
// selectednote.note_name,
// textAlign: TextAlign.center,
// style: TextStyle(
// color: MzanziInnovationHub.of(context)!
// .theme
// .secondaryColor(),
// fontSize: 35.0,
// fontWeight: FontWeight.bold,
// ),
// ),
// const SizedBox(height: 25.0),
// SizedBox(
// width: 700,
// child: MIHTextField(
// controller: businessNameController,
// hintText: "Office",
// editable: false,
// required: false,
// ),
// ),
// const SizedBox(height: 10.0),
// SizedBox(
// width: 700,
// child: MIHTextField(
// controller: userNameController,
// hintText: "Created By",
// editable: false,
// required: false,
// ),
// ),
// const SizedBox(height: 10.0),
// SizedBox(
// width: 700,
// child: MIHTextField(
// controller: dateController,
// hintText: "Created Date",
// editable: false,
// required: false,
// ),
// ),
// const SizedBox(height: 10.0),
// SizedBox(
// width: 700,
// child: MIHTextField(
// controller: noteTitleController,
// hintText: "Note Title",
// editable: false,
// required: false,
// ),
// ),
// const SizedBox(height: 10.0),
// Expanded(
// child: MIHMLTextField(
// controller: noteTextController,
// hintText: "Note Details",
// editable: false,
// required: false,
// ),
// ),
// //const SizedBox(height: 25.0),
// // SizedBox(
// // width: 300,
// // height: 100,
// // child: MIHButton(
// // onTap: () {
// // Navigator.pop(context);
// // },
// // buttonText: "Close",
// // buttonColor: Colors.blueAccent,
// // textColor: Colors.white,
// // ),
// // )
// ],
// ),
// ),
// Positioned(
// top: 5,
// right: 5,
// width: 50,
// height: 50,
// child: IconButton(
// onPressed: () {
// Navigator.pop(context);
// },
// icon: Icon(
// Icons.close,
// color: MzanziInnovationHub.of(context)!.theme.errorColor(),
// size: 35,
// ),
// ),
// ),
// Positioned(
// top: 5,
// left: 5,
// width: 50,
// height: 50,
// child: IconButton(
// onPressed: () {
// deletePatientPopUp(selectednote.idpatient_notes);
// },
// icon: Icon(
// Icons.delete,
// color:
// MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// ),
// ),
// ),
// ],
// ),
// ),
// );
} }
@override @override

View File

@@ -1,5 +1,5 @@
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tile.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tile.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -21,7 +21,7 @@ class PatientProfileTile extends StatefulWidget {
class _PatientProfileTileState extends State<PatientProfileTile> { class _PatientProfileTileState extends State<PatientProfileTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppTile( return MihPackageTile(
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
'/patient-profile', '/patient-profile',

View File

@@ -1,7 +1,7 @@
import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_claim_statement_generation_api.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_claim_statement_generation_api.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.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';
@@ -113,7 +113,7 @@ class _PatientClaimOrStatementState extends State<PatientClaimOrStatement> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -5,9 +5,9 @@ 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_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_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_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_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_error_message.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_components/mih_pop_up_messages/mih_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart';
@@ -84,106 +84,108 @@ class _PatientConsultationState extends State<PatientConsultation> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Add Note", windowTitle: "Add Note",
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
titleController.clear(); titleController.clear();
noteTextController.clear(); noteTextController.clear();
}, },
windowBody: [ windowBody: Column(
MIHTextField( children: [
controller: officeController, MIHTextField(
hintText: "Office", controller: officeController,
editable: false, hintText: "Office",
required: true, editable: false,
), required: true,
const SizedBox(height: 10.0), ),
MIHTextField( const SizedBox(height: 10.0),
controller: doctorController, MIHTextField(
hintText: "Created By", controller: doctorController,
editable: false, hintText: "Created By",
required: true, editable: false,
), required: true,
const SizedBox(height: 10.0), ),
MIHTextField( const SizedBox(height: 10.0),
controller: dateController, MIHTextField(
hintText: "Created Date", controller: dateController,
editable: false, hintText: "Created Date",
required: true, editable: false,
), required: true,
const SizedBox(height: 10.0), ),
MIHTextField( const SizedBox(height: 10.0),
controller: titleController, MIHTextField(
hintText: "Note Title", controller: titleController,
editable: true, hintText: "Note Title",
required: true,
),
const SizedBox(height: 10.0),
SizedBox(
//width: 700,
height: 250,
child: MIHMLTextField(
controller: noteTextController,
hintText: "Note Details",
editable: true, editable: true,
required: true, required: true,
), ),
), const SizedBox(height: 10.0),
SizedBox( SizedBox(
height: 15, //width: 700,
child: ValueListenableBuilder( height: 250,
builder: (BuildContext context, int value, Widget? child) { child: MIHMLTextField(
return Row( controller: noteTextController,
mainAxisSize: MainAxisSize.max, hintText: "Note Details",
mainAxisAlignment: MainAxisAlignment.end, editable: true,
children: [ required: true,
Text( ),
"$value",
style: TextStyle(
color: getNoteDetailLimitColor(),
),
),
const SizedBox(width: 5),
Text(
"/512",
style: TextStyle(
color: getNoteDetailLimitColor(),
),
),
],
);
},
valueListenable: _counter,
), ),
), SizedBox(
const SizedBox(height: 15.0), height: 15,
SizedBox( child: ValueListenableBuilder(
width: 300, builder: (BuildContext context, int value, Widget? child) {
height: 50, return Row(
child: MIHButton( mainAxisSize: MainAxisSize.max,
onTap: () { mainAxisAlignment: MainAxisAlignment.end,
if (isFieldsFilled()) { children: [
addPatientNoteAPICall(); Text(
Navigator.pop(context); "$value",
} else { style: TextStyle(
showDialog( color: getNoteDetailLimitColor(),
context: context, ),
builder: (context) { ),
return const MIHErrorMessage(errorType: "Input Error"); const SizedBox(width: 5),
}, Text(
"/512",
style: TextStyle(
color: getNoteDetailLimitColor(),
),
),
],
); );
} },
}, valueListenable: _counter,
buttonText: "Add Note", ),
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
), ),
) const SizedBox(height: 15.0),
], SizedBox(
width: 300,
height: 50,
child: MIHButton(
onTap: () {
if (isFieldsFilled()) {
addPatientNoteAPICall();
Navigator.pop(context);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
buttonText: "Add Note",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
)
],
),
), ),
); );
} }
@@ -316,7 +318,7 @@ class _PatientConsultationState extends State<PatientConsultation> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -7,9 +7,9 @@ import 'package:mzansi_innovation_hub/mih_components/med_cert_input.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_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_file_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_layout/mih_window.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-app_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_error_message.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_components/mih_pop_up_messages/mih_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart';
@@ -221,62 +221,64 @@ class _PatientDocumentsState extends State<PatientDocuments> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Upload File", windowTitle: "Upload File",
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
MIHFileField( children: [
controller: selectedFileController, MIHFileField(
hintText: "Select File", controller: selectedFileController,
editable: false, hintText: "Select File",
required: true, editable: false,
onPressed: () async { required: true,
FilePickerResult? result = await FilePicker.platform.pickFiles( onPressed: () async {
type: FileType.custom, FilePickerResult? result = await FilePicker.platform.pickFiles(
allowedExtensions: ['jpg', 'png', 'pdf'], type: FileType.custom,
withData: true, allowedExtensions: ['jpg', 'png', 'pdf'],
); withData: true,
if (result == null) return; );
final selectedFile = result.files.first; if (result == null) return;
print("Selected file: $selectedFile"); final selectedFile = result.files.first;
setState(() { print("Selected file: $selectedFile");
selected = selectedFile; setState(() {
}); selected = selectedFile;
setState(() { });
selectedFileController.text = selectedFile.name; setState(() {
}); selectedFileController.text = selectedFile.name;
}, });
),
const SizedBox(height: 15),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Add File",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (isFileFieldsFilled()) {
submitDocUploadForm();
// uploadSelectedFile(selected);
Navigator.pop(context);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
}, },
), ),
) const SizedBox(height: 15),
], SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Add File",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () {
if (isFileFieldsFilled()) {
submitDocUploadForm();
// uploadSelectedFile(selected);
Navigator.pop(context);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
),
)
],
),
), ),
); );
} }
@@ -285,44 +287,46 @@ class _PatientDocumentsState extends State<PatientDocuments> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Create Medical Certificate", windowTitle: "Create Medical Certificate",
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
Medcertinput( children: [
startDateController: startDateController, Medcertinput(
endDateTextController: endDateTextController, startDateController: startDateController,
retDateTextController: retDateTextController, endDateTextController: endDateTextController,
), retDateTextController: retDateTextController,
const SizedBox(height: 15.0),
SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Generate",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () async {
if (isMedCertFieldsFilled()) {
await generateMedCert();
//Navigator.pop(context);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
), ),
) const SizedBox(height: 15.0),
], SizedBox(
width: 300,
height: 50,
child: MIHButton(
buttonText: "Generate",
buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
textColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
onTap: () async {
if (isMedCertFieldsFilled()) {
await generateMedCert();
//Navigator.pop(context);
} else {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Input Error");
},
);
}
},
),
)
],
),
), ),
); );
} }
@@ -331,10 +335,9 @@ class _PatientDocumentsState extends State<PatientDocuments> {
showDialog( showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (context) => MIHWindow( builder: (context) => MihPackageWindow(
fullscreen: false, fullscreen: false,
windowTitle: "Create Prescription", windowTitle: "Create Prescription",
windowTools: const [],
onWindowTapClose: () { onWindowTapClose: () {
medicineController.clear(); medicineController.clear();
quantityController.clear(); quantityController.clear();
@@ -344,22 +347,24 @@ class _PatientDocumentsState extends State<PatientDocuments> {
noRepeatsController.clear(); noRepeatsController.clear();
Navigator.pop(context); Navigator.pop(context);
}, },
windowBody: [ windowBody: Column(
PrescripInput( children: [
medicineController: medicineController, PrescripInput(
quantityController: quantityController, medicineController: medicineController,
dosageController: dosageController, quantityController: quantityController,
timesDailyController: timesDailyController, dosageController: dosageController,
noDaysController: noDaysController, timesDailyController: timesDailyController,
noRepeatsController: noRepeatsController, noDaysController: noDaysController,
outputController: outputController, noRepeatsController: noRepeatsController,
selectedPatient: widget.selectedPatient, outputController: outputController,
signedInUser: widget.signedInUser, selectedPatient: widget.selectedPatient,
business: widget.business, signedInUser: widget.signedInUser,
businessUser: widget.businessUser, business: widget.business,
env: env, businessUser: widget.businessUser,
), env: env,
], ),
],
),
), ),
); );
} }
@@ -594,7 +599,7 @@ class _PatientDocumentsState extends State<PatientDocuments> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -2,7 +2,7 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.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_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_layout/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_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_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
@@ -232,7 +232,7 @@ class _PatientInfoState extends State<PatientInfo> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihAppToolBody( return MihPackageToolBody(
borderOn: true, borderOn: true,
bodyItem: getBody(), bodyItem: getBody(),
); );

View File

@@ -1,6 +1,6 @@
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_profile/package_tools/patient_claim_or_statement.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_profile/package_tools/patient_claim_or_statement.dart';
import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_profile/package_tools/patient_consultation.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_profile/pat_profile/package_tools/patient_consultation.dart';
@@ -23,7 +23,7 @@ class _PatientProfileState extends State<PatientProfile> {
int _selcetedIndex = 0; int _selcetedIndex = 0;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihApp( return MihPackage(
appActionButton: getAction(), appActionButton: getAction(),
appTools: getTools(), appTools: getTools(),
appBody: getToolBody(), appBody: getToolBody(),
@@ -36,8 +36,8 @@ class _PatientProfileState extends State<PatientProfile> {
); );
} }
MihAppAction getAction() { MihPackageAction getAction() {
return MihAppAction( return MihPackageAction(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
iconSize: 35, iconSize: 35,
onTap: () { onTap: () {
@@ -47,7 +47,7 @@ class _PatientProfileState extends State<PatientProfile> {
); );
} }
MihAppTools getTools() { MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {}; Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.perm_identity)] = () { temp[const Icon(Icons.perm_identity)] = () {
setState(() { setState(() {
@@ -69,7 +69,7 @@ class _PatientProfileState extends State<PatientProfile> {
_selcetedIndex = 3; _selcetedIndex = 3;
}); });
}; };
return MihAppTools( return MihPackageTools(
tools: temp, tools: temp,
selcetedIndex: _selcetedIndex, selcetedIndex: _selcetedIndex,
); );

View File

@@ -50,7 +50,7 @@ class _MIHTestState extends State<MIHTest> {
], ],
), ),
secondaryActionButton: null, secondaryActionButton: null,
body: MIHBody( body: const MIHBody(
borderOn: false, borderOn: false,
bodyItems: [ bodyItems: [
// YoutubePlayer( // YoutubePlayer(
@@ -64,18 +64,5 @@ class _MIHTestState extends State<MIHTest> {
pullDownToRefresh: false, pullDownToRefresh: false,
onPullDown: () async {}, onPullDown: () async {},
); );
// return MIHWindow(
// fullscreen: false,
// windowTitle: "Test",
// windowTools: const [],
// onWindowTapClose: () {
// Navigator.pop(context);
// },
// windowBody: [
// YoutubePlayer(
// controller: videoController,
// ),
// ],
// );
} }
} }