kopia lustrzana https://gitlab.com/mysocialportal/relatica
				
				
				
			Show splash screen until 1st account logged in then allow rest to load while app in use.
							rodzic
							
								
									97f48240b3
								
							
						
					
					
						commit
						1978819c9e
					
				|  | @ -86,7 +86,7 @@ Future<void> dependencyInjectionInitialization() async { | ||||||
|   if (serviceInit.isFailure) { |   if (serviceInit.isFailure) { | ||||||
|     _logger.severe('Error initializing credentials'); |     _logger.severe('Error initializing credentials'); | ||||||
|   } else { |   } else { | ||||||
|     await accountsService.initialize(); |     accountsService.initialize(); | ||||||
|   } |   } | ||||||
|   getIt.registerSingleton<AccountsService>(accountsService); |   getIt.registerSingleton<AccountsService>(accountsService); | ||||||
|   getIt<ActiveProfileSelector<IConnectionsRepo>>().subscribeToProfileSwaps(); |   getIt<ActiveProfileSelector<IConnectionsRepo>>().subscribeToProfileSwaps(); | ||||||
|  |  | ||||||
|  | @ -67,6 +67,11 @@ final appRouter = GoRouter( | ||||||
|     refreshListenable: _authService, |     refreshListenable: _authService, | ||||||
|     redirect: (context, state) async { |     redirect: (context, state) async { | ||||||
|       final loggedIn = _authService.loggedIn; |       final loggedIn = _authService.loggedIn; | ||||||
|  | 
 | ||||||
|  |       if (!loggedIn && _authService.initializing) { | ||||||
|  |         return ScreenPaths.splash; | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|       if (!loggedIn && !allowedLoggedOut.contains(state.location)) { |       if (!loggedIn && !allowedLoggedOut.contains(state.location)) { | ||||||
|         return ScreenPaths.signin; |         return ScreenPaths.signin; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|  | @ -1,4 +1,9 @@ | ||||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||||
|  | import 'package:flutter_svg/flutter_svg.dart'; | ||||||
|  | 
 | ||||||
|  | import '../controls/padding.dart'; | ||||||
|  | import '../globals.dart'; | ||||||
|  | import '../services/auth_service.dart'; | ||||||
| 
 | 
 | ||||||
| class SplashScreen extends StatelessWidget { | class SplashScreen extends StatelessWidget { | ||||||
|   @override |   @override | ||||||
|  | @ -9,7 +14,18 @@ class SplashScreen extends StatelessWidget { | ||||||
|         mainAxisAlignment: MainAxisAlignment.center, |         mainAxisAlignment: MainAxisAlignment.center, | ||||||
|         crossAxisAlignment: CrossAxisAlignment.center, |         crossAxisAlignment: CrossAxisAlignment.center, | ||||||
|         children: [ |         children: [ | ||||||
|           const Text('Relatica'), |           SvgPicture.asset('icon/relatica_logo.svg', width: 128), | ||||||
|  |           const VerticalPadding(), | ||||||
|  |           Text( | ||||||
|  |             'Relatica', | ||||||
|  |             style: Theme.of(context).textTheme.headlineLarge, | ||||||
|  |           ), | ||||||
|  |           const VerticalPadding(), | ||||||
|  |           if (getIt<AccountsService>().initializing) ...[ | ||||||
|  |             const CircularProgressIndicator(), | ||||||
|  |             const VerticalPadding(), | ||||||
|  |             const Text('Logging in accounts...'), | ||||||
|  |           ], | ||||||
|         ], |         ], | ||||||
|       )), |       )), | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|  | @ -18,6 +18,7 @@ class AccountsService extends ChangeNotifier { | ||||||
|   Profile? _currentProfile; |   Profile? _currentProfile; | ||||||
|   final _loggedInProfiles = <Profile>{}; |   final _loggedInProfiles = <Profile>{}; | ||||||
|   final _loggedOutProfiles = <Profile>{}; |   final _loggedOutProfiles = <Profile>{}; | ||||||
|  |   var _initializing = false; | ||||||
| 
 | 
 | ||||||
|   final SecretsService secretsService; |   final SecretsService secretsService; | ||||||
| 
 | 
 | ||||||
|  | @ -25,6 +26,8 @@ class AccountsService extends ChangeNotifier { | ||||||
| 
 | 
 | ||||||
|   bool get loggedIn => _currentProfile != null; |   bool get loggedIn => _currentProfile != null; | ||||||
| 
 | 
 | ||||||
|  |   bool get initializing => _initializing; | ||||||
|  | 
 | ||||||
|   List<Profile> get loggedInProfiles => UnmodifiableListView(_loggedInProfiles); |   List<Profile> get loggedInProfiles => UnmodifiableListView(_loggedInProfiles); | ||||||
| 
 | 
 | ||||||
|   List<Profile> get loggedOutProfiles => |   List<Profile> get loggedOutProfiles => | ||||||
|  | @ -35,6 +38,7 @@ class AccountsService extends ChangeNotifier { | ||||||
|   FutureResult<bool, ExecError> initialize() async { |   FutureResult<bool, ExecError> initialize() async { | ||||||
|     final lastActiveProfile = await _getStoredLoginState(); |     final lastActiveProfile = await _getStoredLoginState(); | ||||||
| 
 | 
 | ||||||
|  |     _initializing = true; | ||||||
|     final result = await runCatchingAsync(() async { |     final result = await runCatchingAsync(() async { | ||||||
|       final initialProfiles = secretsService.profiles; |       final initialProfiles = secretsService.profiles; | ||||||
|       for (final p in initialProfiles) { |       for (final p in initialProfiles) { | ||||||
|  | @ -60,9 +64,11 @@ class AccountsService extends ChangeNotifier { | ||||||
|         await setActiveProfile(_loggedInProfiles.first); |         await setActiveProfile(_loggedInProfiles.first); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|  |       notifyListeners(); | ||||||
|       return Result.ok(loggedIn); |       return Result.ok(loggedIn); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |     _initializing = false; | ||||||
|     return result.execErrorCast(); |     return result.execErrorCast(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										40
									
								
								pubspec.lock
								
								
								
								
							
							
						
						
									
										40
									
								
								pubspec.lock
								
								
								
								
							|  | @ -451,6 +451,14 @@ packages: | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "2.0.0" |     version: "2.0.0" | ||||||
|  |   flutter_svg: | ||||||
|  |     dependency: "direct main" | ||||||
|  |     description: | ||||||
|  |       name: flutter_svg | ||||||
|  |       sha256: f991fdb1533c3caeee0cdc14b04f50f0c3916f0dbcbc05237ccbe4e3c6b93f3f | ||||||
|  |       url: "https://pub.dev" | ||||||
|  |     source: hosted | ||||||
|  |     version: "2.0.5" | ||||||
|   flutter_test: |   flutter_test: | ||||||
|     dependency: "direct dev" |     dependency: "direct dev" | ||||||
|     description: flutter |     description: flutter | ||||||
|  | @ -861,6 +869,14 @@ packages: | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "1.8.2" |     version: "1.8.2" | ||||||
|  |   path_parsing: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: path_parsing | ||||||
|  |       sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf | ||||||
|  |       url: "https://pub.dev" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.0.1" | ||||||
|   path_provider: |   path_provider: | ||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
|  | @ -1307,6 +1323,30 @@ packages: | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "3.0.7" |     version: "3.0.7" | ||||||
|  |   vector_graphics: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: vector_graphics | ||||||
|  |       sha256: ea8d3fc7b2e0f35de38a7465063ecfcf03d8217f7962aa2a6717132cb5d43a79 | ||||||
|  |       url: "https://pub.dev" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.1.5" | ||||||
|  |   vector_graphics_codec: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: vector_graphics_codec | ||||||
|  |       sha256: a5eaa5d19e123ad4f61c3718ca1ed921c4e6254238d9145f82aa214955d9aced | ||||||
|  |       url: "https://pub.dev" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.1.5" | ||||||
|  |   vector_graphics_compiler: | ||||||
|  |     dependency: transitive | ||||||
|  |     description: | ||||||
|  |       name: vector_graphics_compiler | ||||||
|  |       sha256: "15edc42f7eaa478ce854eaf1fbb9062a899c0e4e56e775dd73b7f4709c97c4ca" | ||||||
|  |       url: "https://pub.dev" | ||||||
|  |     source: hosted | ||||||
|  |     version: "1.1.5" | ||||||
|   vector_math: |   vector_math: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|  |  | ||||||
|  | @ -58,6 +58,7 @@ dependencies: | ||||||
|   url_launcher: ^6.1.6 |   url_launcher: ^6.1.6 | ||||||
|   uuid: ^3.0.6 |   uuid: ^3.0.6 | ||||||
|   video_player: ^2.4.10 |   video_player: ^2.4.10 | ||||||
|  |   flutter_svg: ^2.0.5 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| dev_dependencies: | dev_dependencies: | ||||||
|  | @ -69,9 +70,9 @@ dev_dependencies: | ||||||
| 
 | 
 | ||||||
| flutter: | flutter: | ||||||
|   uses-material-design: true |   uses-material-design: true | ||||||
|   # assets: |   assets: | ||||||
|   # Add assets from the images directory to the application. |     - icon/relatica_logo.svg | ||||||
|   #- .env | 
 | ||||||
| parts: | parts: | ||||||
|   uet-lms: |   uet-lms: | ||||||
|     source: . |     source: . | ||||||
|  |  | ||||||
		Ładowanie…
	
		Reference in New Issue
	
	 Hank Grabowski
						Hank Grabowski