diff --git a/.idea/NeuroTrack.iml b/.idea/NeuroTrack.iml
new file mode 100644
index 0000000..f327191
--- /dev/null
+++ b/.idea/NeuroTrack.iml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..639900d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..a94f4f7
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/other.xml b/.idea/other.xml
new file mode 100644
index 0000000..7a61067
--- /dev/null
+++ b/.idea/other.xml
@@ -0,0 +1,1319 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..1bd4bc8
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1772942225213
+
+
+ 1772942225213
+
+
+
+
\ No newline at end of file
diff --git a/patient/lib/presentation/auth/auth_screen.dart b/patient/lib/presentation/auth/auth_screen.dart
index a6c21db..349d2ac 100644
--- a/patient/lib/presentation/auth/auth_screen.dart
+++ b/patient/lib/presentation/auth/auth_screen.dart
@@ -24,7 +24,6 @@ class _AuthScreenState extends State {
final PageController _pageController = PageController(initialPage: 0);
int _currentPage = 0;
late Timer _timer;
- bool hasNavigated = false;
final supabase = Supabase.instance.client;
StreamSubscription? _authSubscription;
@@ -58,6 +57,7 @@ class _AuthScreenState extends State {
final session = supabase.auth.currentSession;
if (session != null && mounted) {
WidgetsBinding.instance.addPostFrameCallback((_) {
+ if (!mounted) return;
_handleSuccessfulAuth(session);
});
}
@@ -95,40 +95,45 @@ class _AuthScreenState extends State {
super.dispose();
}
- @override
- void didChangeDependencies() {
- super.didChangeDependencies();
-
- WidgetsBinding.instance.addPostFrameCallback((_) {
- final authProvider = context.read();
- Widget? nextScreen;
-
- if (authProvider.authNavigationStatus.isHome) {
- final userName =
- supabase.auth.currentSession?.user.userMetadata?['full_name'];
- nextScreen = HomeScreen(userName: userName ?? 'User');
- } else if (authProvider.authNavigationStatus.isPersonalDetails) {
- nextScreen = const PersonalDetailsScreen();
- } else if(authProvider.authNavigationStatus.isAssessment) {
- nextScreen = const AssessmentsListScreen();
- } else if(authProvider.authNavigationStatus.isInitialConsultation) {
- nextScreen = const ConsultationRequestScreen();
- } else if (authProvider.authNavigationStatus.isError) {
- SnackbarService.showError('An error occurred. Please try again.');
- return;
- }
-
- if (nextScreen != null) {
- context.read().resetNavigationStatus();
- Navigator.pushReplacement(
- context, MaterialPageRoute(builder: (_) => nextScreen!));
- }
- });
+ void _handleNavigation(AuthNavigationStatus status) {
+ Widget? nextScreen;
+
+ if (status.isHome) {
+ final userName =
+ supabase.auth.currentSession?.user.userMetadata?['full_name'];
+ nextScreen = HomeScreen(userName: userName ?? 'User');
+ } else if (status.isPersonalDetails) {
+ nextScreen = const PersonalDetailsScreen();
+ } else if (status.isAssessment) {
+ nextScreen = const AssessmentsListScreen();
+ } else if (status.isInitialConsultation) {
+ nextScreen = const ConsultationRequestScreen();
+ } else if (status.isError) {
+ SnackbarService.showError('An error occurred. Please try again.');
+ context.read().resetNavigationStatus();
+ return;
+ }
+
+ if (nextScreen != null) {
+ context.read().resetNavigationStatus();
+ Navigator.pushReplacement(
+ context, MaterialPageRoute(builder: (_) => nextScreen!));
+ }
}
@override
Widget build(BuildContext context) {
- Provider.of(context, listen: true).authNavigationStatus;
+ final status = context.watch().authNavigationStatus;
+
+ if (!status.isUnknown) {
+ WidgetsBinding.instance.addPostFrameCallback((_) {
+ if (!mounted) return;
+ final latestStatus =
+ context.read().authNavigationStatus;
+ _handleNavigation(latestStatus);
+ });
+ }
+
return Scaffold(
body: Column(
children: [
@@ -154,7 +159,7 @@ class _AuthScreenState extends State {
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(
_contents.length,
- (index) => _buildDot(index),
+ (index) => _buildDot(index),
),
),
),
@@ -233,4 +238,4 @@ class OnboardingContent {
required this.title,
required this.description,
});
-}
+}
\ No newline at end of file
diff --git a/patient/pubspec.lock b/patient/pubspec.lock
index 347667d..92ef349 100644
--- a/patient/pubspec.lock
+++ b/patient/pubspec.lock
@@ -165,10 +165,10 @@ packages:
dependency: transitive
description:
name: characters
- sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
+ sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
url: "https://pub.dev"
source: hosted
- version: "1.4.0"
+ version: "1.4.1"
checked_yaml:
dependency: transitive
description:
@@ -281,6 +281,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.2.0"
+ dio:
+ dependency: transitive
+ description:
+ name: dio
+ sha256: aff32c08f92787a557dd5c0145ac91536481831a01b4648136373cddb0e64f8c
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.9.2"
+ dio_web_adapter:
+ dependency: transitive
+ description:
+ name: dio_web_adapter
+ sha256: "2f9e64323a7c3c7ef69567d5c800424a11f8337b8b228bad02524c9fb3c1f340"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
dotted_border:
dependency: "direct main"
description:
@@ -301,10 +317,10 @@ packages:
dependency: transitive
description:
name: fake_async
- sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
+ sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.dev"
source: hosted
- version: "1.3.2"
+ version: "1.3.3"
ffi:
dependency: transitive
description:
@@ -342,6 +358,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "5.2.1"
+ flutter_gemini:
+ dependency: "direct main"
+ description:
+ name: flutter_gemini
+ sha256: b7264b1d19acc4b1a5628a0e26c0976aa1fb948f0d3243bc3510ff51e09476b7
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.0"
flutter_gen_core:
dependency: transitive
description:
@@ -413,6 +437,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.4.1"
+ get_it:
+ dependency: "direct main"
+ description:
+ name: get_it
+ sha256: ae78de7c3f2304b8d81f2bb6e320833e5e81de942188542328f074978cc0efa9
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.3.0"
glob:
dependency: transitive
description:
@@ -561,10 +593,10 @@ packages:
dependency: "direct main"
description:
name: intl
- sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
+ sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
url: "https://pub.dev"
source: hosted
- version: "0.19.0"
+ version: "0.20.2"
io:
dependency: transitive
description:
@@ -601,26 +633,26 @@ packages:
dependency: transitive
description:
name: leak_tracker
- sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
+ sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
url: "https://pub.dev"
source: hosted
- version: "10.0.8"
+ version: "11.0.2"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
- sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
+ sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.dev"
source: hosted
- version: "3.0.9"
+ version: "3.0.10"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
- sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
+ sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.dev"
source: hosted
- version: "3.0.1"
+ version: "3.0.2"
lints:
dependency: transitive
description:
@@ -641,26 +673,26 @@ packages:
dependency: transitive
description:
name: matcher
- sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
+ sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
url: "https://pub.dev"
source: hosted
- version: "0.12.17"
+ version: "0.12.19"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
- sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
+ sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
url: "https://pub.dev"
source: hosted
- version: "0.11.1"
+ version: "0.13.0"
meta:
dependency: transitive
description:
name: meta
- sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
+ sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
url: "https://pub.dev"
source: hosted
- version: "1.16.0"
+ version: "1.17.0"
mime:
dependency: transitive
description:
@@ -854,7 +886,7 @@ packages:
source: hosted
version: "3.1.2"
rxdart:
- dependency: transitive
+ dependency: "direct main"
description:
name: rxdart
sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962"
@@ -1022,10 +1054,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
+ sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a"
url: "https://pub.dev"
source: hosted
- version: "0.7.4"
+ version: "0.7.10"
time:
dependency: transitive
description:
@@ -1130,6 +1162,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.1.4"
+ uuid:
+ dependency: "direct main"
+ description:
+ name: uuid
+ sha256: "1fef9e8e11e2991bb773070d4656b7bd5d850967a2456cfc83cf47925ba79489"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.5.3"
vector_graphics:
dependency: "direct main"
description:
@@ -1158,10 +1198,10 @@ packages:
dependency: transitive
description:
name: vector_math
- sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
+ sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
url: "https://pub.dev"
source: hosted
- version: "2.1.4"
+ version: "2.2.0"
vm_service:
dependency: transitive
description:
@@ -1235,5 +1275,5 @@ packages:
source: hosted
version: "2.0.3"
sdks:
- dart: ">=3.7.0 <4.0.0"
+ dart: ">=3.9.0-0 <4.0.0"
flutter: ">=3.27.0"