diff --git a/lib/managers/global_values_manager.dart b/lib/managers/global_values_manager.dart index 1d1ba5f..f6e2abc 100644 --- a/lib/managers/global_values_manager.dart +++ b/lib/managers/global_values_manager.dart @@ -1,15 +1,21 @@ import 'package:camera/camera.dart'; class GlobalValuesManager { + static bool _hasBeenInitialized = false; static List _cameras = []; static List get cameras => [..._cameras]; + static bool get hasBeenInitialized => _hasBeenInitialized; static void setCameras(List cameras) { if (_cameras.isNotEmpty) { - throw Exception('Cameras already set'); + return; } _cameras = cameras; } + + static void setHasBeenInitialized(bool hasBeenInitialized) { + _hasBeenInitialized = hasBeenInitialized; + } } diff --git a/lib/managers/startup_page_manager.dart b/lib/managers/startup_page_manager.dart deleted file mode 100644 index 3439017..0000000 --- a/lib/managers/startup_page_manager.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_secure_storage/flutter_secure_storage.dart'; -import 'package:quid_faciam_hodie/constants/storage_keys.dart'; -import 'package:quid_faciam_hodie/screens/welcome_screen.dart'; - -const storage = FlutterSecureStorage(); - -class StartupPageManager { - static Future getPage() async => - (await storage.read(key: STARTUP_PAGE_KEY)) ?? WelcomeScreen.ID; - - static Future navigateToNewPage( - BuildContext context, - String newPageID, - ) async { - await storage.write(key: STARTUP_PAGE_KEY, value: newPageID); - await Navigator.pushReplacementNamed(context, newPageID); - } -} diff --git a/lib/screens/login_screen.dart b/lib/screens/login_screen.dart index f768331..35ecbaa 100644 --- a/lib/screens/login_screen.dart +++ b/lib/screens/login_screen.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:quid_faciam_hodie/constants/spacing.dart'; import 'package:quid_faciam_hodie/extensions/snackbar.dart'; import 'package:quid_faciam_hodie/managers/authentication_manager.dart'; -import 'package:quid_faciam_hodie/screens/main_screen.dart'; +import 'package:quid_faciam_hodie/screens/server_loading_screen.dart'; import 'package:quid_faciam_hodie/utils/loadable.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; @@ -73,7 +73,7 @@ class _LoginScreenState extends AuthState with Loadable { } if (mounted) { - Navigator.pushReplacementNamed(context, MainScreen.ID); + Navigator.pushReplacementNamed(context, ServerLoadingScreen.ID); } } diff --git a/lib/screens/server_loading_screen.dart b/lib/screens/server_loading_screen.dart index 03a7f89..5f9bfb5 100644 --- a/lib/screens/server_loading_screen.dart +++ b/lib/screens/server_loading_screen.dart @@ -25,17 +25,20 @@ class _ServerLoadingScreenState extends State { @override void initState() { super.initState(); - - load(); } Future load() async { - GlobalValuesManager.setCameras(await availableCameras()); - await Supabase.initialize( - url: SUPABASE_API_URL, - anonKey: SUPABASE_API_KEY, - debug: kDebugMode, - ); + if (!GlobalValuesManager.hasBeenInitialized) { + GlobalValuesManager.setCameras(await availableCameras()); + + await Supabase.initialize( + url: SUPABASE_API_URL, + anonKey: SUPABASE_API_KEY, + debug: kDebugMode, + ); + + GlobalValuesManager.setHasBeenInitialized(true); + } final memories = context.read(); final session = Supabase.instance.client.auth.session(); @@ -64,21 +67,21 @@ class _ServerLoadingScreenState extends State { initialFadeInDelay: Duration.zero, fadeInDuration: Duration(seconds: 1), fadeOutDuration: Duration(seconds: 1), - fadeInDelay: Duration(seconds: 6), + fadeInDelay: Duration(seconds: 4), fadeOutDelay: Duration.zero, ), DotAnimation( initialFadeInDelay: Duration(seconds: 2), fadeInDuration: Duration(seconds: 1), fadeOutDuration: Duration(seconds: 1), - fadeInDelay: Duration(seconds: 6), + fadeInDelay: Duration(seconds: 4), fadeOutDelay: Duration.zero, ), DotAnimation( initialFadeInDelay: Duration(seconds: 4), fadeInDuration: Duration(seconds: 1), fadeOutDuration: Duration(seconds: 1), - fadeInDelay: Duration(seconds: 6), + fadeInDelay: Duration(seconds: 4), fadeOutDelay: Duration.zero, ), SizedBox(height: SMALL_SPACE), diff --git a/lib/screens/welcome_screen.dart b/lib/screens/welcome_screen.dart index 262dbfc..427bb5f 100644 --- a/lib/screens/welcome_screen.dart +++ b/lib/screens/welcome_screen.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:quid_faciam_hodie/constants/spacing.dart'; -import 'package:quid_faciam_hodie/managers/startup_page_manager.dart'; import 'package:quid_faciam_hodie/widgets/logo.dart'; import 'grant_permission_screen.dart'; @@ -44,7 +43,7 @@ class WelcomeScreen extends StatelessWidget { icon: const Icon(Icons.arrow_right), label: const Text('Start'), onPressed: () { - StartupPageManager.navigateToNewPage( + Navigator.pushReplacementNamed( context, GrantPermissionScreen.ID, ); diff --git a/lib/widgets/dot_animation.dart b/lib/widgets/dot_animation.dart index fbd0a4b..64d764e 100644 --- a/lib/widgets/dot_animation.dart +++ b/lib/widgets/dot_animation.dart @@ -59,7 +59,7 @@ class _DotAnimationState extends State { if (animateIn) { // Animate out _timer = Timer(widget.fadeOutDelay, () { - if (mounted) { + if (!mounted) { return; } @@ -70,7 +70,7 @@ class _DotAnimationState extends State { } else { // Animate in _timer = Timer(widget.fadeInDelay, () { - if (mounted) { + if (!mounted) { return; }