diff --git a/Frontend/lib/mih_components/mih_package_components/mih_floating_menu.dart b/Frontend/lib/mih_components/mih_package_components/mih_floating_menu.dart new file mode 100644 index 00000000..eea4ff96 --- /dev/null +++ b/Frontend/lib/mih_components/mih_package_components/mih_floating_menu.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_speed_dial/flutter_speed_dial.dart'; +import 'package:mzansi_innovation_hub/main.dart'; + +class MihFloatingMenu extends StatefulWidget { + final IconData? icon; + final AnimatedIconData? animatedIcon; + final List children; + const MihFloatingMenu({ + super.key, + this.icon, + this.animatedIcon, + required this.children, + }); + + @override + State createState() => _MihFloatingMenuState(); +} + +class _MihFloatingMenuState extends State { + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only( + right: 5.0, + bottom: 5.0, + ), + child: SpeedDial( + icon: widget.icon, + animatedIcon: widget.animatedIcon, + activeIcon: Icons.close, + backgroundColor: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + activeBackgroundColor: + MzanziInnovationHub.of(context)!.theme.errorColor(), + foregroundColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + overlayColor: Colors.black, + overlayOpacity: 0.5, + children: widget.children, + onOpen: () => debugPrint('OPENING DIAL'), + onClose: () => debugPrint('DIAL CLOSED'), + ), + ); + } +} diff --git a/Frontend/lib/mih_components/mih_package_components/test/package_test.dart b/Frontend/lib/mih_components/mih_package_components/test/package_test.dart index 4679bf8a..9069f807 100644 --- a/Frontend/lib/mih_components/mih_package_components/test/package_test.dart +++ b/Frontend/lib/mih_components/mih_package_components/test/package_test.dart @@ -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/mih_components/mih_layout/mih_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart'; @@ -6,6 +7,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_ 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_app_window.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_icons.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:flutter/material.dart'; @@ -183,6 +185,25 @@ class _PackageTestState extends State { ), ), const SizedBox(height: 10), + MihFloatingMenu(children: [ + SpeedDialChild( + child: Icon( + Icons.add, + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Add", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + labelStyle: TextStyle( + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + onTap: () {}, + ) + ]), Container( color: Colors.black, width: 200, diff --git a/Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_one.dart b/Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_one.dart new file mode 100644 index 00000000..73b857c1 --- /dev/null +++ b/Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_one.dart @@ -0,0 +1,60 @@ +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'; +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_icons.dart'; + +class PackageToolOne extends StatefulWidget { + const PackageToolOne({super.key}); + + @override + State createState() => _PackageToolOneState(); +} + +class _PackageToolOneState extends State { + @override + Widget build(BuildContext context) { + return MihAppToolBody( + borderOn: true, + bodyItem: getBody(), + ); + } + + Widget getBody() { + return MihAppToolBody( + borderOn: true, + bodyItem: MihSingleChildScroll( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + "Hello", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), + ), + const SizedBox(height: 10), + Container( + color: Colors.black, + width: 200, + height: 200, + padding: EdgeInsets.zero, + alignment: Alignment.center, + child: IconButton.filled( + onPressed: () {}, + icon: Icon( + MihIcons.mihLogo, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + ), + ) + ], + ), + ), + ); + } +} diff --git a/Frontend/lib/mih_packages/about_mih/package_tools/mih_info.dart b/Frontend/lib/mih_packages/about_mih/package_tools/mih_info.dart index 4795ea74..a7b2b586 100644 --- a/Frontend/lib/mih_packages/about_mih/package_tools/mih_info.dart +++ b/Frontend/lib/mih_packages/about_mih/package_tools/mih_info.dart @@ -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/mih_components/mih_inputs_and_buttons/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_single_child_scroll.dart'; @@ -6,9 +7,11 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih- import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.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:universal_html/js.dart" as js; import 'package:url_launcher/url_launcher.dart'; +import 'package:share_plus/share_plus.dart'; class MihInfo extends StatefulWidget { const MihInfo({super.key}); @@ -581,6 +584,13 @@ class _MihInfoState extends State { } } + void shareMIHLink(BuildContext context, String message, String link) { + String shareText = "$message: $link"; + Share.share( + shareText, + ); + } + @override Widget build(BuildContext context) { return MihAppToolBody( @@ -590,112 +600,196 @@ class _MihInfoState extends State { } Widget getBody() { - return MihSingleChildScroll( - child: Column( - children: [ - SizedBox( - width: 165, - child: FittedBox( - child: Icon( - MihIcons.mihLogo, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + return Stack( + children: [ + MihSingleChildScroll( + child: Column( + children: [ + SizedBox( + width: 165, + child: FittedBox( + child: Icon( + MihIcons.mihLogo, + color: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), + ), ), - ), - ), - const SizedBox( - height: 10, - ), - const Text( - "Mzansi Innovation Hub", - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 30, - ), - ), - const Padding( - padding: EdgeInsets.symmetric(vertical: 10.0), - child: Divider(), - ), - // const SizedBox( - // height: 10, - // ), - Wrap( - alignment: WrapAlignment.start, - crossAxisAlignment: WrapCrossAlignment.start, - spacing: 10, - runSpacing: 10, - children: [ - ourVision(), - ourMission(), + const SizedBox( + height: 10, + ), + const Text( + "Mzansi Innovation Hub", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 30, + ), + ), + const Padding( + padding: EdgeInsets.symmetric(vertical: 10.0), + child: Divider(), + ), + // const SizedBox( + // height: 10, + // ), + Wrap( + alignment: WrapAlignment.start, + crossAxisAlignment: WrapCrossAlignment.start, + spacing: 10, + runSpacing: 10, + children: [ + ourVision(), + ourMission(), + ], + ), + const SizedBox( + height: 10, + ), + Wrap( + alignment: WrapAlignment.start, + crossAxisAlignment: WrapCrossAlignment.start, + spacing: 10, + runSpacing: 10, + children: [ + SizedBox( + width: 300, + height: 50, + child: MIHButton( + onTap: () { + installMihTrigger(); + }, + buttonText: getInstallButtonText(), + buttonColor: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ), + SizedBox( + width: 300, + height: 50, + child: MIHButton( + onTap: () { + launchSocialUrl( + Uri.parse( + "https://www.youtube.com/playlist?list=PLuT35kJIui0H5kXjxNOZlHoOPZbQLr4qh", + ), + ); + }, + buttonText: "MIH Beginners Guide", + buttonColor: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ), + ]), + const SizedBox( + height: 10, + ), + const Padding( + padding: EdgeInsets.symmetric(vertical: 10.0), + child: Divider(), + ), + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + // spacing: 10, + // runSpacing: 10, + children: [ + founderTitle(), + founderBio(), + ], + ), + const Padding( + padding: EdgeInsets.symmetric(vertical: 10.0), + child: Divider(), + ), + mihSocials(), ], ), - const SizedBox( - height: 10, - ), - Wrap( - alignment: WrapAlignment.start, - crossAxisAlignment: WrapCrossAlignment.start, - spacing: 10, - runSpacing: 10, - children: [ - SizedBox( - width: 300, - height: 50, - child: MIHButton( - onTap: () { - installMihTrigger(); - }, - buttonText: getInstallButtonText(), - buttonColor: - MzanziInnovationHub.of(context)!.theme.secondaryColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ), - SizedBox( - width: 300, - height: 50, - child: MIHButton( - onTap: () { - launchSocialUrl( - Uri.parse( - "https://www.youtube.com/playlist?list=PLuT35kJIui0H5kXjxNOZlHoOPZbQLr4qh", - ), - ); - }, - buttonText: "MIH Beginners Guide", - buttonColor: - MzanziInnovationHub.of(context)!.theme.secondaryColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ), - ]), - const SizedBox( - height: 10, - ), - const Padding( - padding: EdgeInsets.symmetric(vertical: 10.0), - child: Divider(), - ), - Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - // spacing: 10, - // runSpacing: 10, + ), + Positioned( + right: 0, + bottom: 0, + child: MihFloatingMenu( + icon: Icons.share, children: [ - founderTitle(), - founderBio(), + SpeedDialChild( + child: Icon( + Icons.vpn_lock, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "MIH - Web", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + labelStyle: TextStyle( + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + fontWeight: FontWeight.bold, + ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + onTap: () { + shareMIHLink( + context, + "Check out the MIH app on the Web", + "https://app.mzansi-innovation-hub.co.za/", + ); + }, + ), + SpeedDialChild( + child: Icon( + Icons.apple, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "MIH - iOS", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + labelStyle: TextStyle( + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + fontWeight: FontWeight.bold, + ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + onTap: () { + shareMIHLink( + context, + "Check out the MIH app on the App Store", + "https://apps.apple.com/za/app/mzansi-innovation-hub/id6743310890", + ); + }, + ), + SpeedDialChild( + child: Icon( + Icons.android, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "MIH - Android", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + labelStyle: TextStyle( + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + fontWeight: FontWeight.bold, + ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + onTap: () { + shareMIHLink( + context, + "Check out the MIH app on the Play Store", + "https://play.google.com/store/apps/details?id=za.co.mzansiinnovationhub.mih", + ); + }, + ), ], ), - const Padding( - padding: EdgeInsets.symmetric(vertical: 10.0), - child: Divider(), - ), - mihSocials(), - ], - ), + ) + ], ); } } diff --git a/Frontend/lib/mih_packages/calendar/package_tools/appointments.dart b/Frontend/lib/mih_packages/calendar/package_tools/appointments.dart index a2530d90..9469fbc0 100644 --- a/Frontend/lib/mih_packages/calendar/package_tools/appointments.dart +++ b/Frontend/lib/mih_packages/calendar/package_tools/appointments.dart @@ -1,3 +1,4 @@ +import 'package:flutter_speed_dial/flutter_speed_dial.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_date_input.dart'; @@ -7,6 +8,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_ 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-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_pop_up_messages/mih_error_message.dart'; import 'package:mzansi_innovation_hub/mih_objects/appointment.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; @@ -300,24 +302,33 @@ class _PatientAccessRequestState extends State { ), ), Positioned( - right: 0, - bottom: 0, - child: Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(50), - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - ), - child: IconButton( - color: MzanziInnovationHub.of(context)!.theme.primaryColor(), - onPressed: () { + right: 0, + bottom: 0, + child: MihFloatingMenu( + icon: Icons.add, + animatedIcon: AnimatedIcons.menu_close, + children: [ + SpeedDialChild( + child: Icon( + Icons.add, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Add 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: () { addAppointmentWindow(); }, - icon: const Icon( - Icons.add, - size: 50, - ), - ), - )) + ) + ], + ), + ), ], ); } diff --git a/Frontend/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart b/Frontend/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart index b1574e53..837e0e3c 100644 --- a/Frontend/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart +++ b/Frontend/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart @@ -128,27 +128,29 @@ class _MihPersonalHomeState extends State { //=============== About MIH =============== temp.add({"About MIH": AboutMihTile(packageSize: packageSize)}); //=============== Dev =============== - temp.add({ - "test": MihAppTile( - onTap: () { - Navigator.of(context).pushNamed( - '/package-dev', - //arguments: widget.signedInUser, - ); - }, - appName: "Test", - appIcon: Container( - padding: const EdgeInsets.all(0.5), - child: Icon( - Icons.warning_amber_rounded, - color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + if (widget.isDevActive) { + temp.add({ + "test": MihAppTile( + onTap: () { + Navigator.of(context).pushNamed( + '/package-dev', + //arguments: widget.signedInUser, + ); + }, + appName: "Test", + appIcon: Container( + padding: const EdgeInsets.all(0.5), + child: Icon( + Icons.warning_amber_rounded, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), ), - ), - iconSize: packageSize, - primaryColor: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - secondaryColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), - ) - }); + iconSize: packageSize, + primaryColor: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + secondaryColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ) + }); + } return temp; } diff --git a/Frontend/lib/mih_packages/mzansi_ai/package_tools/ai_chat.dart b/Frontend/lib/mih_packages/mzansi_ai/package_tools/ai_chat.dart index 0294008b..b8762cb1 100644 --- a/Frontend/lib/mih_packages/mzansi_ai/package_tools/ai_chat.dart +++ b/Frontend/lib/mih_packages/mzansi_ai/package_tools/ai_chat.dart @@ -1,11 +1,13 @@ import 'dart:async'; import 'dart:convert'; +import 'package:flutter_speed_dial/flutter_speed_dial.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_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_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_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_env/env.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; @@ -69,6 +71,7 @@ class _AiChatState extends State { } void _handleSendPressed(types.PartialText message) { + FocusScope.of(context).unfocus(); final textMessage = types.TextMessage( author: _user, createdAt: DateTime.now().millisecondsSinceEpoch, @@ -349,7 +352,7 @@ class _AiChatState extends State { return Visibility( visible: value, child: Padding( - padding: const EdgeInsets.all(5.0), + padding: const EdgeInsets.all(10.0), child: Align( alignment: Alignment.centerLeft, child: FittedBox( @@ -615,95 +618,169 @@ class _AiChatState extends State { Widget build(BuildContext context) { return MihAppToolBody( borderOn: false, - bodyItem: Column( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - mainAxisSize: MainAxisSize.max, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, + bodyItem: getBody(), + ); + } + + Widget getBody() { + return Stack( + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Visibility( + // visible: _showModelOptions.value == true, + // child: IconButton.filled( + // iconSize: 20, + // onPressed: () { + // if (_showModelOptions.value == true) { + // setState(() { + // _showModelOptions.value = false; + // }); + // } else { + // setState(() { + // _showModelOptions.value = true; + // }); + // } + // }, + // icon: const Icon( + // Icons.settings, + // ), + // ), + // ), + Expanded( + child: Text( + "Mzansi AI", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + ), + ), + ), + // Expanded( + // child: Container( + // alignment: Alignment.centerRight, + // child: IconButton( + // onPressed: () { + // _resetChat(); + // }, + // icon: const Icon(Icons.refresh), + // ), + // ), + // ), + ], + ), + _getSettings(), + Expanded( + child: GestureDetector( + onTap: () { + if (_showModelOptions.value == true) { + setState(() { + _showModelOptions.value = false; + }); + } + }, + child: Chat( + messages: _messages, + // onAttachmentPressed: _handleAttachmentPressed, + // onMessageTap: _handleMessageTap, + // onPreviewDataFetched: _handlePreviewDataFetched, + onSendPressed: _handleSendPressed, + showUserAvatars: false, + showUserNames: false, + user: _user, + theme: getChatTheme(), + ), + ), + ) + ], + ), + Positioned( + left: 0, + top: 0, + child: Visibility( + visible: _showModelOptions.value == true, + child: IconButton.filled( + iconSize: 20, + onPressed: () { + if (_showModelOptions.value == true) { + setState(() { + _showModelOptions.value = false; + }); + } else { + setState(() { + _showModelOptions.value = true; + }); + } + }, + icon: const Icon( + Icons.settings, + ), + ), + ), + ), + Positioned( + right: 0, + bottom: 70, + child: MihFloatingMenu( + animatedIcon: AnimatedIcons.menu_close, children: [ - Expanded( - child: Container( - alignment: Alignment.centerLeft, - child: Row( - children: [ - Visibility( - visible: _showModelOptions.value == false, - child: IconButton( - onPressed: () { - if (_showModelOptions.value == true) { - setState(() { - _showModelOptions.value = false; - }); - } else { - setState(() { - _showModelOptions.value = true; - }); - } - }, - icon: const Icon(Icons.settings), - ), - ), - Visibility( - visible: _showModelOptions.value == true, - child: IconButton.filled( - onPressed: () { - if (_showModelOptions.value == true) { - setState(() { - _showModelOptions.value = false; - }); - } else { - setState(() { - _showModelOptions.value = true; - }); - } - }, - icon: const Icon(Icons.settings), - ), - ), - ], - ), + SpeedDialChild( + child: Icon( + Icons.refresh, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), ), - ), - Text( - "Mzansi AI", - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 25, + label: "New Chat", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + labelStyle: TextStyle( + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), fontWeight: FontWeight.bold, - color: - MzanziInnovationHub.of(context)!.theme.secondaryColor(), ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + onTap: () { + _resetChat(); + }, ), - Expanded( - child: Container( - alignment: Alignment.centerRight, - child: IconButton( - onPressed: () { - _resetChat(); - }, - icon: const Icon(Icons.refresh), - ), + SpeedDialChild( + child: Icon( + Icons.settings, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), ), + label: "Settings", + 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 (_showModelOptions.value == true) { + setState(() { + _showModelOptions.value = false; + }); + } else { + setState(() { + _showModelOptions.value = true; + }); + } + }, ), ], ), - _getSettings(), - Expanded( - child: Chat( - messages: _messages, - // onAttachmentPressed: _handleAttachmentPressed, - // onMessageTap: _handleMessageTap, - // onPreviewDataFetched: _handlePreviewDataFetched, - onSendPressed: _handleSendPressed, - showUserAvatars: false, - showUserNames: false, - user: _user, - theme: getChatTheme(), - ), - ) - ], - ), + ), + ], ); } } diff --git a/Frontend/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart b/Frontend/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart index 649379f6..f1cab19d 100644 --- a/Frontend/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart +++ b/Frontend/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart @@ -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/mih_apis/mih_mzansi_wallet_apis.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_button.dart'; @@ -7,6 +8,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_ 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-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_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_objects/app_user.dart'; @@ -316,24 +318,33 @@ class _MihCardsState extends State { ), ), Positioned( - right: 0, - bottom: 0, - child: Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(50), - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - ), - child: IconButton( - color: MzanziInnovationHub.of(context)!.theme.primaryColor(), - onPressed: () { - addCardWindow(context); - }, - icon: const Icon( - Icons.add_card, - size: 50, - ), - ), - )) + right: 0, + bottom: 0, + child: MihFloatingMenu( + animatedIcon: AnimatedIcons.menu_close, + children: [ + SpeedDialChild( + child: Icon( + Icons.add, + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Add 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: () { + addCardWindow(context); + }, + ) + ]), + ) ], ); } diff --git a/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_claim_or_statement.dart b/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_claim_or_statement.dart index 48e09a18..c5b95028 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_claim_or_statement.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_claim_or_statement.dart @@ -1,6 +1,8 @@ +import 'package:flutter_speed_dial/flutter_speed_dial.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_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_pop_up_messages/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; @@ -110,42 +112,92 @@ class _PatientClaimOrStatementState extends State { } Widget getBody() { - return FutureBuilder( - future: futueFiles, - builder: (context, snapshot) { - if (snapshot.connectionState == ConnectionState.waiting) { - return const Center( - child: Mihloadingcircle(), - ); - } else if (snapshot.hasData) { - final filesList = snapshot.data!; - return Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: setIcons(), - ), - Divider( - color: - MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - //const Placeholder(), - BuildClaimStatementFileList( - files: filesList, - signedInUser: widget.signedInUser, - selectedPatient: widget.selectedPatient, - business: widget.business, - businessUser: widget.businessUser, - type: widget.type, - ), - ], - ); - } else { - return const Center( - child: Text("Error Loading Notes"), - ); - } - }, + return Stack( + children: [ + FutureBuilder( + future: futueFiles, + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Center( + child: Mihloadingcircle(), + ); + } else if (snapshot.hasData) { + final filesList = snapshot.data!; + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Claims/ Statements", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + ), + ), + ], + ), + Divider( + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor()), + const SizedBox(height: 10), + //const Placeholder(), + BuildClaimStatementFileList( + files: filesList, + signedInUser: widget.signedInUser, + selectedPatient: widget.selectedPatient, + business: widget.business, + businessUser: widget.businessUser, + type: widget.type, + ), + ], + ); + } else { + return const Center( + child: Text("Error Loading Notes"), + ); + } + }, + ), + Visibility( + visible: widget.type != "personal", + child: Positioned( + right: 0, + bottom: 0, + child: MihFloatingMenu( + icon: Icons.file_copy, + animatedIcon: AnimatedIcons.menu_close, + children: [ + SpeedDialChild( + child: Icon( + Icons.add, + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Generate Claim/ Statement", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + labelStyle: TextStyle( + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + fontWeight: FontWeight.bold, + ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + onTap: () { + claimOrStatementWindow(); + }, + ) + ], + ), + ), + ), + ], ); } } diff --git a/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_consultation.dart b/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_consultation.dart index 39d0fa92..a30c3d0b 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_consultation.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_consultation.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'package:flutter_speed_dial/flutter_speed_dial.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_multiline_text_input.dart'; @@ -6,6 +7,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_ 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-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_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'; @@ -321,41 +323,88 @@ class _PatientConsultationState extends State { } Widget getBody() { - return MihSingleChildScroll( - child: FutureBuilder( - future: futueNotes, - builder: (context, snapshot) { - if (snapshot.connectionState == ConnectionState.waiting) { - return const Center( - child: Mihloadingcircle(), - ); - } else if (snapshot.hasData) { - final notesList = snapshot.data!; - return Column(children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: setIcons(), - ), - Divider( - color: - MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - BuildNotesList( - notes: notesList, - signedInUser: widget.signedInUser, - selectedPatient: widget.selectedPatient, - business: widget.business, - businessUser: widget.businessUser, - type: widget.type, - ), - ]); - } else { - return const Center( - child: Text("Error Loading Notes"), - ); - } - }, - ), + return Stack( + children: [ + MihSingleChildScroll( + child: FutureBuilder( + future: futueNotes, + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Center( + child: Mihloadingcircle(), + ); + } else if (snapshot.hasData) { + final notesList = snapshot.data!; + return Column(children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Consultation Notes", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor()), + ), + ], + ), + Divider( + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor()), + const SizedBox(height: 10), + BuildNotesList( + notes: notesList, + signedInUser: widget.signedInUser, + selectedPatient: widget.selectedPatient, + business: widget.business, + businessUser: widget.businessUser, + type: widget.type, + ), + ]); + } else { + return const Center( + child: Text("Error Loading Notes"), + ); + } + }, + ), + ), + Visibility( + visible: widget.type != "personal", + child: Positioned( + right: 0, + bottom: 0, + child: MihFloatingMenu( + icon: Icons.add, + animatedIcon: AnimatedIcons.menu_close, + children: [ + SpeedDialChild( + child: Icon( + Icons.add, + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Add Note", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + labelStyle: TextStyle( + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + fontWeight: FontWeight.bold, + ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + onTap: () {}, + ) + ], + ), + ), + ), + ], ); } } diff --git a/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_documents.dart b/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_documents.dart index 740273a0..fd31970a 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_documents.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_documents.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:mzansi_innovation_hub/main.dart'; 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'; @@ -7,6 +8,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_ 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-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_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'; @@ -372,6 +374,104 @@ class _PatientDocumentsState extends State { } } + Widget getMenu() { + if (widget.type == "personal") { + return Positioned( + right: 0, + bottom: 0, + child: MihFloatingMenu( + icon: Icons.add, + animatedIcon: AnimatedIcons.menu_close, + children: [ + SpeedDialChild( + child: Icon( + Icons.attach_file, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Attach 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: () { + uploudFilePopUp(); + }, + ) + ], + ), + ); + } else { + return Positioned( + right: 0, + bottom: 0, + child: MihFloatingMenu( + icon: Icons.add, + animatedIcon: AnimatedIcons.menu_close, + children: [ + SpeedDialChild( + child: Icon( + Icons.attach_file, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Add 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: () { + uploudFilePopUp(); + }, + ), + SpeedDialChild( + child: Icon( + Icons.sick_outlined, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Generate Medical Certificate", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + labelStyle: TextStyle( + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + fontWeight: FontWeight.bold, + ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + onTap: () { + medCertPopUp(); + }, + ), + SpeedDialChild( + child: Icon( + Icons.medication, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Generate Prescription", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + labelStyle: TextStyle( + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + fontWeight: FontWeight.bold, + ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + onTap: () { + prescritionPopUp(); + }, + ), + ], + ), + ); + } + } + List setIcons() { if (widget.type == "personal") { return [ @@ -488,41 +588,59 @@ class _PatientDocumentsState extends State { } Widget getBody() { - return MihSingleChildScroll( - child: FutureBuilder( - future: futueFiles, - builder: (context, snapshot) { - if (snapshot.connectionState == ConnectionState.waiting) { - return const Center( - child: Mihloadingcircle(), - ); - } else if (snapshot.hasData) { - final filesList = snapshot.data!; - return Column(children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: setIcons(), - ), - Divider( - color: - MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - BuildFilesList( - files: filesList, - signedInUser: widget.signedInUser, - selectedPatient: widget.selectedPatient, - business: widget.business, - businessUser: widget.businessUser, - type: widget.type, - ), - ]); - } else { - return const Center( - child: Text("Error Loading Notes"), - ); - } - }, - ), + return Stack( + children: [ + MihSingleChildScroll( + child: FutureBuilder( + future: futueFiles, + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Center( + child: Mihloadingcircle(), + ); + } else if (snapshot.hasData) { + final filesList = snapshot.data!; + return Column(children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Documents", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + ), + ), + ], + ), + Divider( + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor()), + const SizedBox(height: 10), + BuildFilesList( + files: filesList, + signedInUser: widget.signedInUser, + selectedPatient: widget.selectedPatient, + business: widget.business, + businessUser: widget.businessUser, + type: widget.type, + ), + ]); + } else { + return const Center( + child: Text("Error Loading Notes"), + ); + } + }, + ), + ), + getMenu(), + ], ); } } diff --git a/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_info.dart b/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_info.dart index 68669501..d435be7e 100644 --- a/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_info.dart +++ b/Frontend/lib/mih_packages/patient_profile/pat_profile/package_tools/patient_info.dart @@ -1,7 +1,9 @@ +import 'package:flutter_speed_dial/flutter_speed_dial.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_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_floating_menu.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/patients.dart'; @@ -237,58 +239,87 @@ class _PatientInfoState extends State { } Widget getBody() { - return MihSingleChildScroll( - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - //crossAxisAlignment: , - children: [ - Text( - "Personal Details", - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 25, - fontWeight: FontWeight.bold, - color: - MzanziInnovationHub.of(context)!.theme.secondaryColor(), - ), + return Stack( + children: [ + MihSingleChildScroll( + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + //crossAxisAlignment: , + children: [ + Text( + "Personal Details", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + ), + ), + ]), + Divider( + color: + MzanziInnovationHub.of(context)!.theme.secondaryColor()), + const SizedBox(height: 10), + getPatientDetailsField(), + const SizedBox(height: 10), + Text( + "Medical Aid Details", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), ), - Visibility( - visible: widget.type == "personal", - child: IconButton( - icon: const Icon(Icons.edit), - alignment: Alignment.topRight, + ), + Divider( + color: + MzanziInnovationHub.of(context)!.theme.secondaryColor()), + const SizedBox(height: 10), + getMedAidDetailsFields(), + ], + ), + ), + Visibility( + visible: widget.type == "personal", + child: Positioned( + right: 0, + bottom: 0, + child: MihFloatingMenu( + icon: Icons.add, + animatedIcon: AnimatedIcons.menu_close, + children: [ + SpeedDialChild( + child: Icon( + Icons.edit, color: - MzanziInnovationHub.of(context)!.theme.secondaryColor(), - onPressed: () { - Navigator.of(context).pushNamed('/patient-profile/edit', - arguments: PatientEditArguments( - widget.signedInUser, widget.selectedPatient)); - }, + MzanziInnovationHub.of(context)!.theme.primaryColor(), ), + label: "Edit Profile", + 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('/patient-profile/edit', + arguments: PatientEditArguments( + widget.signedInUser, widget.selectedPatient)); + }, ) - ]), - Divider( - color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - getPatientDetailsField(), - const SizedBox(height: 10), - Text( - "Medical Aid Details", - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 25, - fontWeight: FontWeight.bold, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ], ), ), - Divider( - color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - getMedAidDetailsFields(), - ], - ), + ), + ], ); } } diff --git a/Frontend/macos/Flutter/GeneratedPluginRegistrant.swift b/Frontend/macos/Flutter/GeneratedPluginRegistrant.swift index 9ed45910..cea5ee1a 100644 --- a/Frontend/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/Frontend/macos/Flutter/GeneratedPluginRegistrant.swift @@ -11,7 +11,9 @@ import flutter_tts import geolocator_apple import local_auth_darwin import mobile_scanner +import path_provider_foundation import printing +import share_plus import shared_preferences_foundation import syncfusion_pdfviewer_macos import url_launcher_macos @@ -24,7 +26,9 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) FLALocalAuthPlugin.register(with: registry.registrar(forPlugin: "FLALocalAuthPlugin")) MobileScannerPlugin.register(with: registry.registrar(forPlugin: "MobileScannerPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PrintingPlugin.register(with: registry.registrar(forPlugin: "PrintingPlugin")) + SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SyncfusionFlutterPdfViewerPlugin.register(with: registry.registrar(forPlugin: "SyncfusionFlutterPdfViewerPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) diff --git a/Frontend/pubspec.lock b/Frontend/pubspec.lock index d41ac5d6..ee9ca4cb 100644 --- a/Frontend/pubspec.lock +++ b/Frontend/pubspec.lock @@ -470,6 +470,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.27" + flutter_speed_dial: + dependency: "direct main" + description: + name: flutter_speed_dial + sha256: "698a037274a66dbae8697c265440e6acb6ab6cae9ac5f95c749e7944d8f28d41" + url: "https://pub.dev" + source: hosted + version: "7.0.0" flutter_swipe_detector: dependency: "direct main" description: @@ -856,6 +864,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "0ca7359dad67fd7063cb2892ab0c0737b2daafd807cf1acecd62374c8fae6c12" + url: "https://pub.dev" + source: hosted + version: "2.2.16" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" + url: "https://pub.dev" + source: hosted + version: "2.4.1" path_provider_linux: dependency: transitive description: @@ -992,6 +1024,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + share_plus: + dependency: "direct main" + description: + name: share_plus + sha256: fce43200aa03ea87b91ce4c3ac79f0cecd52e2a7a56c7a4185023c271fbfa6da + url: "https://pub.dev" + source: hosted + version: "10.1.4" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: cc012a23fc2d479854e6c80150696c4a5f5bb62cb89af4de1c505cf78d0a5d0b + url: "https://pub.dev" + source: hosted + version: "5.0.2" shared_preferences: dependency: transitive description: diff --git a/Frontend/pubspec.yaml b/Frontend/pubspec.yaml index b1e71c3d..8051ccc2 100644 --- a/Frontend/pubspec.yaml +++ b/Frontend/pubspec.yaml @@ -73,7 +73,9 @@ dependencies: flutter_chat_types: ^3.6.2 uuid: ^4.5.1 flutter_tts: ^4.2.2 - + flutter_speed_dial: ^7.0.0 + share_plus: ^10.1.4 + dev_dependencies: flutter_test: sdk: flutter diff --git a/Frontend/windows/flutter/generated_plugin_registrant.cc b/Frontend/windows/flutter/generated_plugin_registrant.cc index 67aa4f33..cd68881b 100644 --- a/Frontend/windows/flutter/generated_plugin_registrant.cc +++ b/Frontend/windows/flutter/generated_plugin_registrant.cc @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -25,6 +26,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("LocalAuthPlugin")); PrintingPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PrintingPlugin")); + SharePlusWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); SyncfusionPdfviewerWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("SyncfusionPdfviewerWindowsPlugin")); UrlLauncherWindowsRegisterWithRegistrar( diff --git a/Frontend/windows/flutter/generated_plugins.cmake b/Frontend/windows/flutter/generated_plugins.cmake index 524b0632..339c6add 100644 --- a/Frontend/windows/flutter/generated_plugins.cmake +++ b/Frontend/windows/flutter/generated_plugins.cmake @@ -8,6 +8,7 @@ list(APPEND FLUTTER_PLUGIN_LIST geolocator_windows local_auth_windows printing + share_plus syncfusion_pdfviewer_windows url_launcher_windows )