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 + + + + \ 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"