NEW: MIH Home & Mzansi Profile Provider Setup pt 1

This commit is contained in:
2025-10-16 10:16:18 +02:00
parent 553d22dd6b
commit d51603ff5d
28 changed files with 2687 additions and 2515 deletions

View File

@@ -2,16 +2,15 @@ import 'package:go_router/go_router.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_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_profile_provider.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:flutter/material.dart';
import 'package:provider/provider.dart';
class MzansiProfile extends StatefulWidget {
final AppProfileUpdateArguments arguments;
const MzansiProfile({
super.key,
required this.arguments,
});
@override
@@ -19,8 +18,6 @@ class MzansiProfile extends StatefulWidget {
}
class _MzansiProfileState extends State<MzansiProfile> {
int _selcetedIndex = 0;
@override
Widget build(BuildContext context) {
return MihPackage(
@@ -28,11 +25,9 @@ class _MzansiProfileState extends State<MzansiProfile> {
appTools: getTools(),
appBody: getToolBody(),
appToolTitles: getToolTitle(),
selectedbodyIndex: _selcetedIndex,
onIndexChange: (newValue) {
setState(() {
_selcetedIndex = newValue;
});
selectedbodyIndex: context.watch<MzansiProfileProvider>().personalIndex,
onIndexChange: (newIndex) {
context.read<MzansiProfileProvider>().setPersonalIndex(newIndex);
},
);
}
@@ -55,29 +50,25 @@ class _MzansiProfileState extends State<MzansiProfile> {
MihPackageTools getTools() {
Map<Widget, void Function()?> temp = {};
temp[const Icon(Icons.person)] = () {
setState(() {
_selcetedIndex = 0;
});
context.read<MzansiProfileProvider>().setPersonalIndex(0);
};
// temp[const Icon(Icons.person)] = () {
// context.read<MzansiProfileProvider>().setPersonalIndex(1);
// };
temp[const Icon(Icons.settings)] = () {
setState(() {
_selcetedIndex = 1;
});
context.read<MzansiProfileProvider>().setPersonalIndex(1);
};
return MihPackageTools(
tools: temp,
selcetedIndex: _selcetedIndex,
selcetedIndex: context.watch<MzansiProfileProvider>().personalIndex,
);
}
List<Widget> getToolBody() {
List<Widget> toolBodies = [];
toolBodies.add(MihPersonalProfile(
arguments: widget.arguments,
));
toolBodies.add(MihPersonalSettings(
signedInUser: widget.arguments.signedInUser,
));
toolBodies.add(MihPersonalProfile());
// toolBodies.add(MihPersonalProfile());
toolBodies.add(MihPersonalSettings());
return toolBodies;
}

View File

@@ -1,19 +1,18 @@
import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_profile_provider.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_user_services.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_objects/app_user.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
class MihPersonalSettings extends StatefulWidget {
final AppUser signedInUser;
const MihPersonalSettings({
super.key,
required this.signedInUser,
});
@override
@@ -35,75 +34,83 @@ class _MihPersonalSettingsState extends State<MihPersonalSettings> {
context: context,
barrierDismissible: false,
builder: (context) {
return MihPackageAlert(
alertIcon: Icon(
Icons.warning_amber_rounded,
size: 100,
color: MihColors.getRedColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
),
alertTitle:
"Are you sure you want to permanently delete your MIH account?",
alertBody: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
"This action will remove all of your data, and it cannot be recovered. We understand this is a big decision, so please take a moment to double-check.\n\nIf you're certain, please confirm below. If you've changed your mind, you can simply close this window.",
style: TextStyle(
color: MihColors.getSecondaryColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
fontSize: 15,
fontWeight: FontWeight.bold,
),
return Consumer<MzansiProfileProvider>(
builder: (BuildContext context,
MzansiProfileProvider mzansiProfileProvider, Widget? child) {
return MihPackageAlert(
alertIcon: Icon(
Icons.warning_amber_rounded,
size: 100,
color: MihColors.getRedColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
),
const SizedBox(height: 15),
Wrap(
spacing: 10,
runSpacing: 10,
alertTitle:
"Are you sure you want to permanently delete your MIH account?",
alertBody: Column(
mainAxisSize: MainAxisSize.min,
children: [
MihButton(
onPressed: () {
MihUserServices.deleteAccount(
widget.signedInUser.app_id, context);
},
buttonColor: MihColors.getRedColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
width: 300,
child: Text(
"Delete",
style: TextStyle(
color: MihColors.getPrimaryColor(
MzansiInnovationHub.of(context)!.theme.mode ==
"Dark"),
fontSize: 20,
fontWeight: FontWeight.bold,
),
Text(
"This action will remove all of your data, and it cannot be recovered. We understand this is a big decision, so please take a moment to double-check.\n\nIf you're certain, please confirm below. If you've changed your mind, you can simply close this window.",
style: TextStyle(
color: MihColors.getSecondaryColor(
MzansiInnovationHub.of(context)!.theme.mode ==
"Dark"),
fontSize: 15,
fontWeight: FontWeight.bold,
),
),
MihButton(
onPressed: () {
Navigator.pop(context);
},
buttonColor: MihColors.getGreenColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
width: 300,
child: Text(
"Cancel",
style: TextStyle(
color: MihColors.getPrimaryColor(
const SizedBox(height: 15),
Wrap(
spacing: 10,
runSpacing: 10,
children: [
MihButton(
onPressed: () {
MihUserServices.deleteAccount(
mzansiProfileProvider, context);
},
buttonColor: MihColors.getRedColor(
MzansiInnovationHub.of(context)!.theme.mode ==
"Dark"),
fontSize: 20,
fontWeight: FontWeight.bold,
width: 300,
child: Text(
"Delete",
style: TextStyle(
color: MihColors.getPrimaryColor(
MzansiInnovationHub.of(context)!.theme.mode ==
"Dark"),
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
),
),
),
MihButton(
onPressed: () {
Navigator.pop(context);
},
buttonColor: MihColors.getGreenColor(
MzansiInnovationHub.of(context)!.theme.mode ==
"Dark"),
width: 300,
child: Text(
"Cancel",
style: TextStyle(
color: MihColors.getPrimaryColor(
MzansiInnovationHub.of(context)!.theme.mode ==
"Dark"),
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
),
],
)
],
)
],
),
alertColour: MihColors.getRedColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
),
alertColour: MihColors.getRedColor(
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
);
},
);
},
);