Merge pull request #96 from yaso-meth/QOL--About-MIH-Package-Alignment

QOL--About-MIH-Package-Alignment
This commit is contained in:
yaso-meth
2025-03-06 11:06:59 +02:00
committed by GitHub
12 changed files with 328 additions and 217 deletions

View File

@@ -224,8 +224,8 @@ class _MIHAppDrawerState extends State<MIHAppDrawer> {
),
onTap: () {
Navigator.of(context).pushNamed(
'/privacy-policy',
//arguments: widget.signedInUser,
'/about',
arguments: 1,
);
},
),
@@ -253,8 +253,8 @@ class _MIHAppDrawerState extends State<MIHAppDrawer> {
),
onTap: () {
Navigator.of(context).pushNamed(
'/terms-of-service',
//arguments: widget.signedInUser,
'/about',
arguments: 2,
);
},
),

View File

@@ -0,0 +1,89 @@
import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app.dart';
import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app_action.dart';
import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app_tools.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/app_tools/mih_info.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/app_tools/mih_privacy_policy.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/app_tools/mih_terms_of_service.dart';
import 'package:flutter/material.dart';
class AboutMih extends StatefulWidget {
final int packageIndex;
const AboutMih({
super.key,
required this.packageIndex,
});
@override
State<AboutMih> createState() => _AboutMihState();
}
class _AboutMihState extends State<AboutMih> {
late int _selcetedIndex;
@override
void initState() {
super.initState();
setState(() {
_selcetedIndex = widget.packageIndex;
});
}
@override
Widget build(BuildContext context) {
return MihApp(
appActionButton: getAction(),
appTools: getTools(),
appBody: getToolBody(),
selectedbodyIndex: _selcetedIndex,
onIndexChange: (newValue) {
setState(() {
_selcetedIndex = newValue;
});
print("Index: $_selcetedIndex");
},
);
}
MihAppAction getAction() {
return MihAppAction(
icon: const Icon(Icons.arrow_back),
iconSize: 35,
onTap: () {
Navigator.of(context).pop();
},
);
}
MihAppTools getTools() {
Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.info)] = () {
setState(() {
_selcetedIndex = 0;
});
};
temp[const Icon(Icons.policy)] = () {
setState(() {
_selcetedIndex = 1;
});
};
temp[const Icon(Icons.design_services)] = () {
setState(() {
_selcetedIndex = 2;
});
};
return MihAppTools(
tools: temp,
selcetedIndex: _selcetedIndex,
);
}
List<Widget> getToolBody() {
List<Widget> toolBodies = [
const MihInfo(),
const MihPrivacyPolicy(),
const MIHTermsOfService(),
];
return toolBodies;
}
}

View File

@@ -1,30 +1,22 @@
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_tile.dart';
import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart';
import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app_window.dart';
import 'package:Mzansi_Innovation_Hub/mih_objects/arguments.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import '../../mih_components/mih_inputs_and_buttons/mih_button.dart';
import '../../mih_components/mih_layout/mih_action.dart';
import '../../mih_components/mih_layout/mih_body.dart';
import '../../mih_components/mih_layout/mih_header.dart';
import '../../mih_components/mih_layout/mih_layout_builder.dart';
import '../../mih_components/mih_layout/mih_tile.dart';
import '../../main.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import "package:universal_html/js.dart" as js;
import 'package:url_launcher/url_launcher.dart';
// import 'dart:io' show Platform;
// import 'dart:html' as html;
class MIHAbout extends StatefulWidget {
const MIHAbout({
super.key,
});
class MihInfo extends StatefulWidget {
const MihInfo({super.key});
@override
State<MIHAbout> createState() => _MIHAboutState();
State<MihInfo> createState() => _MihInfoState();
}
class _MIHAboutState extends State<MIHAbout> {
class _MihInfoState extends State<MihInfo> {
final Uri _tiktokUrl =
Uri.parse('https://www.tiktok.com/@mzansi.innovation.hub');
final Uri _whatsappUrl =
@@ -42,140 +34,6 @@ class _MIHAboutState extends State<MIHAbout> {
final Uri _facebookUrl =
Uri.parse('https://www.facebook.com/profile.php?id=61565345762136');
MIHAction getActionButton() {
return MIHAction(
icon: const Icon(Icons.arrow_back),
iconSize: 35,
onTap: () {
Navigator.of(context).pushNamedAndRemoveUntil(
'/',
arguments: AuthArguments(true, false),
(route) => false,
);
},
);
}
MIHHeader getHeader() {
return const MIHHeader(
headerAlignment: MainAxisAlignment.center,
headerItems: [
Text(
"About",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 25,
),
),
],
);
}
MIHBody getBody() {
return MIHBody(
borderOn: false,
bodyItems: [
SizedBox(
width: 165,
child: Image(
image: MzanziInnovationHub.of(context)!.theme.altLogoImage()),
),
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: "Install MIH",
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(),
],
);
}
void installMihTrigger() {
final isWebAndroid =
kIsWeb && (defaultTargetPlatform == TargetPlatform.android);
@@ -673,28 +531,122 @@ class _MIHAboutState extends State<MIHAbout> {
}
}
@override
void dispose() {
super.dispose();
}
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return MIHLayoutBuilder(
actionButton: getActionButton(),
secondaryActionButton: null,
header: getHeader(),
body: getBody(),
actionDrawer: null,
secondaryActionDrawer: null,
bottomNavBar: null,
pullDownToRefresh: false,
onPullDown: () async {},
return MihAppToolBody(
borderOn: false,
bodyItem: getBody(),
);
}
Widget getBody() {
return SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Column(
children: [
SizedBox(
width: 165,
child: Image(
image: MzanziInnovationHub.of(context)!.theme.altLogoImage()),
),
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: "Install MIH",
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(),
],
),
),
);
}
}

View File

@@ -0,0 +1,26 @@
import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart';
import 'package:flutter/material.dart';
class MihPrivacyPolicy extends StatelessWidget {
const MihPrivacyPolicy({super.key});
@override
Widget build(BuildContext context) {
return MihAppToolBody(
borderOn: false,
bodyItem: getBody(context),
);
}
Widget getBody(BuildContext context) {
return SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Column(
children: PolicyAndTermsText().getPrivacyPolicyText(context),
),
),
);
}
}

View File

@@ -0,0 +1,26 @@
import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart';
import 'package:flutter/material.dart';
class MIHTermsOfService extends StatelessWidget {
const MIHTermsOfService({super.key});
@override
Widget build(BuildContext context) {
return MihAppToolBody(
borderOn: false,
bodyItem: getBody(context),
);
}
Widget getBody(BuildContext context) {
return SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10.0),
child: Column(
children: PolicyAndTermsText().getTermsOfServiceText(context),
),
),
);
}
}

View File

@@ -3,17 +3,18 @@ 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_layout_builder.dart';
import 'package:Mzansi_Innovation_Hub/mih_objects/arguments.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/mih_policy_tos/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';
class MIHPrivacyPolocy extends StatefulWidget {
const MIHPrivacyPolocy({super.key});
class MIHPrivacyPolocyExternal extends StatefulWidget {
const MIHPrivacyPolocyExternal({super.key});
@override
State<MIHPrivacyPolocy> createState() => _MIHPrivacyPolocyState();
State<MIHPrivacyPolocyExternal> createState() =>
_MIHPrivacyPolocyExternalState();
}
class _MIHPrivacyPolocyState extends State<MIHPrivacyPolocy> {
class _MIHPrivacyPolocyExternalState extends State<MIHPrivacyPolocyExternal> {
MIHAction getActionButton() {
return MIHAction(
icon: const Icon(Icons.arrow_back),
@@ -31,15 +32,7 @@ class _MIHPrivacyPolocyState extends State<MIHPrivacyPolocy> {
MIHHeader getHeader() {
return const MIHHeader(
headerAlignment: MainAxisAlignment.center,
headerItems: [
Text(
"Privacy Policy",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 25,
),
),
],
headerItems: [],
);
}

View File

@@ -3,17 +3,18 @@ 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_layout_builder.dart';
import 'package:Mzansi_Innovation_Hub/mih_objects/arguments.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/mih_policy_tos/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';
class MIHTermsOfService extends StatefulWidget {
const MIHTermsOfService({super.key});
class MIHTermsOfServiceExternal extends StatefulWidget {
const MIHTermsOfServiceExternal({super.key});
@override
State<MIHTermsOfService> createState() => _MIHTermsOfServiceState();
State<MIHTermsOfServiceExternal> createState() =>
_MIHTermsOfServiceExternalState();
}
class _MIHTermsOfServiceState extends State<MIHTermsOfService> {
class _MIHTermsOfServiceExternalState extends State<MIHTermsOfServiceExternal> {
MIHAction getActionButton() {
return MIHAction(
icon: const Icon(Icons.arrow_back),
@@ -31,15 +32,7 @@ class _MIHTermsOfServiceState extends State<MIHTermsOfService> {
MIHHeader getHeader() {
return const MIHHeader(
headerAlignment: MainAxisAlignment.center,
headerItems: [
Text(
"Terms of Service",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 25,
),
),
],
headerItems: [],
);
}

View File

@@ -29,8 +29,17 @@ class PolicyAndTermsText {
child:
Image(image: MzanziInnovationHub.of(context)!.theme.altLogoImage()),
),
const SizedBox(
height: 10,
const SizedBox(height: 10),
const Text(
"Privacy Policy",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 30,
),
),
const Padding(
padding: EdgeInsets.symmetric(vertical: 10.0),
child: Divider(),
),
//=============== Effective Date ===============
SizedBox(
@@ -427,6 +436,17 @@ class PolicyAndTermsText {
const SizedBox(
height: 10,
),
const Text(
"Terms of Service",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 30,
),
),
const Padding(
padding: EdgeInsets.symmetric(vertical: 10.0),
child: Divider(),
),
//=============== Effective Date ===============
SizedBox(
width: 1250,

View File

@@ -243,7 +243,7 @@ class _RegisterState extends State<Register> {
onTap: () {
Navigator.of(context).pushNamed(
'/about',
//arguments: widget.signedInUser,
arguments: 0,
);
},
);

View File

@@ -291,7 +291,7 @@ class _SignInState extends State<SignIn> {
onTap: () {
Navigator.of(context).pushNamed(
'/about',
//arguments: widget.signedInUser,
arguments: 0,
);
},
);

View File

@@ -329,7 +329,7 @@ class _MIHHomeState extends State<MIHHome> {
onTap: () {
Navigator.of(context).pushNamed(
'/about',
//arguments: widget.signedInUser,
arguments: 0,
);
},
tileName: "About MIH",
@@ -510,7 +510,7 @@ class _MIHHomeState extends State<MIHHome> {
onTap: () {
Navigator.of(context).pushNamed(
'/about',
//arguments: widget.signedInUser,
arguments: 0,
);
},
tileName: "About MIH",

View File

@@ -1,8 +1,9 @@
import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/test/package_test.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/about_mih.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/mih_policy_tos_ext/mih_privacy_polocy_external.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/mih_policy_tos_ext/mih_terms_of_service_external.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/calendar/mzansi_calendar.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/calculator/mih_calculator.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/mih_policy_tos/mih_privacy_polocy.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/mih_policy_tos/mih_terms_of_service.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/mzansi_ai/mzansi_ai.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/mzansi_wallet/mih_barcode_scanner.dart';
import 'package:Mzansi_Innovation_Hub/mih_packages/mzansi_wallet/mzansi_wallet.dart';
@@ -17,7 +18,7 @@ import '../mih_packages/patient_profile/patient_edit.dart';
// import '../mih_packages/patient_profile/patient_manager.dart';
import '../mih_objects/app_user.dart';
import '../mih_objects/arguments.dart';
import '../mih_packages/about_mih/mih_about.dart';
// import '../mih_packages/about_mih/mih_about.dart';
import '../mih_packages/authentication/forgot_password.dart';
import '../mih_packages/authentication/reset_password.dart';
import '../mih_packages/patient_profile/full_screen_file.dart';
@@ -46,13 +47,15 @@ class RouteGenerator {
//Privacy Policy
case '/privacy-policy':
return MaterialPageRoute(
settings: settings, builder: (_) => const MIHPrivacyPolocy());
settings: settings,
builder: (_) => const MIHPrivacyPolocyExternal());
//===============================================================
//Terms Of Service
case '/terms-of-service':
return MaterialPageRoute(
settings: settings, builder: (_) => const MIHTermsOfService());
settings: settings,
builder: (_) => const MIHTermsOfServiceExternal());
//===============================================================
default:
// Internal Navigation
@@ -87,20 +90,29 @@ class RouteGenerator {
//About MIH
case '/about':
return MaterialPageRoute(
settings: settings, builder: (_) => const MIHAbout());
if (args is int) {
return MaterialPageRoute(
settings: settings,
builder: (_) => AboutMih(
packageIndex: args,
),
);
}
return _errorRoute();
//===============================================================
//Privacy Policy
case '/privacy-policy':
return MaterialPageRoute(
settings: settings, builder: (_) => const MIHPrivacyPolocy());
settings: settings,
builder: (_) => const MIHPrivacyPolocyExternal());
//===============================================================
//Terms Of Service
case '/terms-of-service':
return MaterialPageRoute(
settings: settings, builder: (_) => const MIHTermsOfService());
settings: settings,
builder: (_) => const MIHTermsOfServiceExternal());
//===============================================================
//User Profile