diff --git a/Frontend/lib/main.dart b/Frontend/lib/main.dart index e9c7db51..fb5e2604 100644 --- a/Frontend/lib/main.dart +++ b/Frontend/lib/main.dart @@ -18,7 +18,6 @@ class MzanziInnovationHub extends StatefulWidget { } class _MzanziInnovationHubState extends State { - late ThemeMode _themeMode; late MihTheme theme; Color getPrimany() { @@ -35,12 +34,11 @@ class _MzanziInnovationHubState extends State { void changeTheme(ThemeMode themeMode) { setState(() { - _themeMode = themeMode; - if (_themeMode == ThemeMode.light) { + if (themeMode == ThemeMode.light) { setState(() { theme.mode = "Light"; }); - } else if (_themeMode == ThemeMode.dark) { + } else if (themeMode == ThemeMode.dark) { setState(() { theme.mode = "Dark"; }); @@ -60,10 +58,8 @@ class _MzanziInnovationHubState extends State { bool isDarkMode = systemTheme == Brightness.dark; if (isDarkMode) { theme.mode = "Dark"; - _themeMode = ThemeMode.dark; } else { theme.mode = "Light"; - _themeMode = ThemeMode.light; } theme.platform = Theme.of(context).platform; @@ -80,7 +76,7 @@ class _MzanziInnovationHubState extends State { precacheImage(theme.logoFrame(), context); return MaterialApp( title: getTitle(), - themeMode: _themeMode, + themeMode: ThemeMode.system, theme: theme.getThemeData(), darkTheme: theme.getThemeData(), debugShowCheckedModeBanner: false, diff --git a/Frontend/lib/mih_packages/mih_home/mih_profile_getter.dart b/Frontend/lib/mih_packages/mih_home/mih_profile_getter.dart index c0d71eb0..b64e7777 100644 --- a/Frontend/lib/mih_packages/mih_home/mih_profile_getter.dart +++ b/Frontend/lib/mih_packages/mih_home/mih_profile_getter.dart @@ -1,10 +1,12 @@ +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/mih-app_tool_body.dart'; +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:flutter/material.dart'; import '../../mih_apis/mih_api_calls.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_pop_up_messages/mih_loading_circle.dart'; import '../../mih_env/env.dart'; import '../../mih_objects/app_user.dart'; @@ -31,6 +33,7 @@ class _MIHProfileGetterState extends State { String proPicUrl = "empty"; ImageProvider? propicFile; + int _selcetedIndex = 0; ImageProvider? isPictureAvailable(String url) { if (url == "") { @@ -74,6 +77,150 @@ class _MIHProfileGetterState extends State { } } + MihAppTools getErrorTools() { + Map temp = {}; + temp[const Icon(Icons.power_off_outlined)] = () { + setState(() { + _selcetedIndex = 0; + }); + }; + + return MihAppTools( + tools: temp, + selcetedIndex: _selcetedIndex, + ); + } + + List getErrorToolBody(String error) { + List toolBodies = [ + MihAppToolBody( + borderOn: true, + bodyItem: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Text( + "Connection Error", + textAlign: TextAlign.center, + style: TextStyle( + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + fontSize: 35, + fontWeight: FontWeight.bold, + ), + ), + Icon( + Icons.power_off_outlined, + size: 150, + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), + SizedBox( + width: 500, + child: Text( + "Looks like we ran into an issue getting your data.\nPlease check you internet connection and try again.", + textAlign: TextAlign.center, + style: TextStyle( + color: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ), + const SizedBox(height: 15), + MIHButton( + onTap: () { + Navigator.of(context).popAndPushNamed("/"); + }, + buttonText: "Refresh", + buttonColor: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + const SizedBox(height: 15), + Padding( + padding: const EdgeInsets.all(10.0), + child: SizedBox( + width: 500, + child: SelectionArea( + child: Text( + "Error: $error", + textAlign: TextAlign.left, + style: TextStyle( + color: + MzanziInnovationHub.of(context)!.theme.errorColor(), + fontSize: 15, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + ), + ], + ), + ) + ]; + return toolBodies; + } + + Widget errorPage(String error) { + return MihApp( + appActionButton: MihAppAction( + icon: const Icon(Icons.refresh), + iconSize: 35, + onTap: () { + Navigator.of(context).popAndPushNamed("/"); + }, + ), + appTools: getErrorTools(), + appBody: getErrorToolBody(error), + selectedbodyIndex: _selcetedIndex, + onIndexChange: (newValue) { + setState(() { + _selcetedIndex = newValue; + }); + //print("Index: $_selcetedIndex"); + }, + ); + // return MIHLayoutBuilder( + // actionButton: MIHAction( + // icon: const Icon(Icons.refresh), + // iconSize: 35, + // onTap: () { + // Navigator.of(context).popAndPushNamed("/"); + // }, + // ), + // header: const MIHHeader( + // headerAlignment: MainAxisAlignment.center, + // headerItems: [ + // Text( + // "Mzanzi Innovation Hub", + // style: TextStyle( + // fontWeight: FontWeight.bold, + // fontSize: 20, + // ), + // ), + // ], + // ), + // secondaryActionButton: null, + // body: MIHBody( + // borderOn: false, + // bodyItems: [ + // Align( + // alignment: Alignment.center, + // child: Text( + // '$error occurred', + // style: const TextStyle(fontSize: 18), + // ), + // ), + // ], + // ), + // actionDrawer: null, + // secondaryActionDrawer: null, + // bottomNavBar: null, + // pullDownToRefresh: false, + // onPullDown: () async {}, + // ); + } + // Dont know icons created by Freepik - Flaticon @override void dispose() { @@ -109,44 +256,7 @@ class _MIHProfileGetterState extends State { personalSelected: widget.personalSelected, ); } else { - return MIHLayoutBuilder( - actionButton: MIHAction( - icon: const Icon(Icons.refresh), - iconSize: 35, - onTap: () { - Navigator.of(context).popAndPushNamed("/"); - }, - ), - header: const MIHHeader( - headerAlignment: MainAxisAlignment.center, - headerItems: [ - Text( - "Mzanzi Innovation Hub", - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 20, - ), - ), - ], - ), - secondaryActionButton: null, - body: MIHBody( - borderOn: false, - bodyItems: [ - Center( - child: Text( - '${snapshot.error} occurred', - style: const TextStyle(fontSize: 18), - ), - ), - ], - ), - actionDrawer: null, - secondaryActionDrawer: null, - bottomNavBar: null, - pullDownToRefresh: false, - onPullDown: () async {}, - ); + return errorPage(snapshot.error.toString()); } } return const Mihloadingcircle();