Compare commits
	
		
			24 Commits
		
	
	
		
			master
			...
			authentica
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3f1c93c35f | |||
| fcc439a311 | |||
| 5a3eeed7b5 | |||
| 0e5e2403ce | |||
| 76a655ac63 | |||
| b458f8c0c8 | |||
| 2e5aafdb5a | |||
| fdd020f103 | |||
| 918215b5b8 | |||
| b68e46c622 | |||
| 305cddea19 | |||
| 50886d97b3 | |||
| 692c255a19 | |||
| 4dc0b26e95 | |||
| bf1d8f188f | |||
| a72babfafe | |||
| 830d32152b | |||
| 7f0544d19c | |||
| c005c3dc43 | |||
| 97c14c7a99 | |||
| f37babc084 | |||
| e6c234f0ea | |||
| 2088e0e4bc | |||
| 1e07b2ed1c | 
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -13,10 +13,6 @@ build/ | |||||||
| # If you're building an application, you may want to check-in your pubspec.lock | # If you're building an application, you may want to check-in your pubspec.lock | ||||||
| pubspec.lock | pubspec.lock | ||||||
| 
 | 
 | ||||||
| # Directory created by dartdoc |  | ||||||
| # If you don't generate documentation locally you can remove this line. |  | ||||||
| doc/api/ |  | ||||||
| 
 |  | ||||||
| # dotenv environment variables file | # dotenv environment variables file | ||||||
| .env* | .env* | ||||||
| 
 | 
 | ||||||
| @ -38,7 +34,6 @@ doc/api/ | |||||||
| 
 | 
 | ||||||
| ### Flutter ### | ### Flutter ### | ||||||
| # Flutter/Dart/Pub related | # Flutter/Dart/Pub related | ||||||
| **/doc/api/ |  | ||||||
| .fvm/ | .fvm/ | ||||||
| .pub-cache/ | .pub-cache/ | ||||||
| .pub/ | .pub/ | ||||||
|  | |||||||
| @ -23,7 +23,6 @@ | |||||||
| # Flutter/Dart/Pub related | # Flutter/Dart/Pub related | ||||||
| # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. | ||||||
| /pubspec.lock | /pubspec.lock | ||||||
| **/doc/api/ |  | ||||||
| .dart_tool/ | .dart_tool/ | ||||||
| .packages | .packages | ||||||
| build/ | build/ | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| <!-- | <!-- | ||||||
|  * Copyright (C) 2022 WYATT GROUP |  * Copyright (C) 2023 WYATT GROUP | ||||||
|  * Please see the AUTHORS file for details. |  * Please see the AUTHORS file for details. | ||||||
| 
 | 
 | ||||||
|  * This program is free software: you can redistribute it and/or modify |  * This program is free software: you can redistribute it and/or modify | ||||||
| @ -19,9 +19,7 @@ | |||||||
| # Flutter - Authentication BLoC | # Flutter - Authentication BLoC | ||||||
| 
 | 
 | ||||||
| <p align="left"> | <p align="left"> | ||||||
|   <a href="https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis"> |   <a href="https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis"><img src="https://img.shields.io/badge/Style-Wyatt%20Analysis-blue.svg?style=flat-square" alt="Style: Wyatt Analysis" /></a> | ||||||
|     <img src="https://img.shields.io/badge/Style-Wyatt%20Analysis-blue.svg?style=flat-square" alt="Style: Wyatt Analysis" /> |  | ||||||
|   </a> |  | ||||||
|   <img src="https://img.shields.io/badge/SDK-Flutter-blue?style=flat-square" alt="SDK: Flutter" /> |   <img src="https://img.shields.io/badge/SDK-Flutter-blue?style=flat-square" alt="SDK: Flutter" /> | ||||||
| </p> | </p> | ||||||
| 
 | 
 | ||||||
| @ -29,37 +27,195 @@ Authentication Bloc for Flutter. | |||||||
| 
 | 
 | ||||||
| ## Features | ## Features | ||||||
| 
 | 
 | ||||||
| - Wyatt Architecture | * 🧐 Wyatt Architecture | ||||||
| - Entities: | * 🧱 Entities | ||||||
|     - Account : AccountModel -> Contains account information from provider |     - Account -> Contains account information from provider. | ||||||
|     - AccountWrapper : AccountWrapperModel -> Contains account and extra data. |     - Session -> Contains account and associated data retrieved from an external source. | ||||||
| - Data Sources: |     - AuthenticationChangeEvent -> Describes an event in authentication change (sign in, sign up, sign out, etc...) | ||||||
|     - Local: |     - SessionWrapper -> Contains latest authentication change event and session. | ||||||
|         - Cached Authentication Data : AuthenticationCacheDataSourceImpl -> Provides a cache implementation | * 🔑 Powerful and secured authentication repository | ||||||
|     - Remote: | * 🔥 Multiple data sources | ||||||
|         - Remote Authentication Data : AuthenticationFirebaseDataSourceImpl -> Provides a proxy to FirebaseAuth |     - Mock | ||||||
| - Repositories: |     - Firebase | ||||||
|     - AuthenticationRepository : AuthenticationRepositoryImpl -> Provides all authentication methods | * 🧊 Cubits, why make it complicated when you can make it simple? | ||||||
| - Features: |     - Goes to the essential. | ||||||
|     - Authentication: | * 📐 Consistent | ||||||
|         - AuthenticationBuilder : widget to build reactive view from authentication state |     - Every class have same naming convention | ||||||
|         - AuthenticationCubit : tracks every auth changes, have sign out capability. | * 🧪 Tested | ||||||
|     - SignUp: | * 📚 Documented: [available here](./doc/api/index.md) | ||||||
|         - SignUpCubit: implementation of a FormDataCubit from `wyatt_form_bloc` for the sign up |  | ||||||
|     - SignIn: |  | ||||||
|         - SignUpCubit: implementation of a FormDataCubit from `wyatt_form_bloc` for the sign in |  | ||||||
| - Consistent |  | ||||||
|     * Every class have same naming convention |  | ||||||
| - Tested |  | ||||||
| 
 | 
 | ||||||
| ## Getting started | ## Getting started | ||||||
| 
 | 
 | ||||||
| Simply add `wyatt_authentication_bloc` in `pubspec.yaml`, then | Simply add `wyatt_authentication_bloc` in `pubspec.yaml` , then | ||||||
| 
 | 
 | ||||||
| ```dart | ```dart | ||||||
| import 'package:wyatt_authentication_bloc/wyatt_authentication_bloc.dart'; | import 'package:wyatt_authentication_bloc/wyatt_authentication_bloc.dart'; | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Usage | ### Data source | ||||||
| 
 | 
 | ||||||
| // TODO | The first step is to provide a data source. | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | getIt.registerLazySingleton<AuthenticationRemoteDataSource<int>>( | ||||||
|  |     () => AuthenticationFirebaseDataSourceImpl<int>( | ||||||
|  |         firebaseAuth: FirebaseAuth.instance, | ||||||
|  |         googleSignIn: | ||||||
|  |             GoogleSignIn(clientId: DefaultFirebaseOptions.ios.iosClientId)), | ||||||
|  | ); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | > Here we use GetIt (see example project) | ||||||
|  | 
 | ||||||
|  | ### Repository | ||||||
|  | 
 | ||||||
|  | Then you can configure your repository. | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final AuthenticationRepository<int> authenticationRepository = AuthenticationRepositoryImpl( | ||||||
|  |     authenticationRemoteDataSource: | ||||||
|  |         getIt<AuthenticationRemoteDataSource<int>>(), | ||||||
|  |     customPasswordValidator: const CustomPassword.pure(), | ||||||
|  |     extraSignUpInputs: [ | ||||||
|  |         FormInput( | ||||||
|  |         AuthFormField.confirmPassword, | ||||||
|  |         const ConfirmedPassword.pure(), | ||||||
|  |         metadata: const FormInputMetadata<void>(export: false), | ||||||
|  |         ), | ||||||
|  |     ], | ||||||
|  | ); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | > Here we pass some extra inputs for the sign up, and a custom password validator. | ||||||
|  | 
 | ||||||
|  | ### Cubits | ||||||
|  | 
 | ||||||
|  | It is necessary to implement each cubit. Don't panic, most of the work is already done 😊 you just have to customize the logic of these. | ||||||
|  | 
 | ||||||
|  | In each of these cubits it is necessary to overload the various callbacks. | ||||||
|  | 
 | ||||||
|  | > Here the associated data `Data` is a `int` | ||||||
|  | 
 | ||||||
|  | #### Authentication | ||||||
|  | 
 | ||||||
|  | In the authentication are managed, the refresh, the deletion of account or the disconnection. | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | class ExampleAuthenticationCubit extends AuthenticationCubit<int> { | ||||||
|  |   ExampleAuthenticationCubit({required super.authenticationRepository}); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onReauthenticate(Result<Account, AppException> result) async { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onRefresh(Result<Account, AppException> result) { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onSignInFromCache(SessionWrapper<int> wrapper) { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<void> onSignOut() { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<void> onDelete() { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | #### Sign Up | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | class ExampleSignUpCubit extends SignUpCubit<int> { | ||||||
|  |   ExampleSignUpCubit({ | ||||||
|  |     required super.authenticationRepository, | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onSignUpWithEmailAndPassword(Result<Account, AppException> result, WyattForm form) async { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | #### Sign In | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | class ExampleSignInCubit extends SignInCubit<int> { | ||||||
|  |   ExampleSignInCubit({ | ||||||
|  |     required super.authenticationRepository, | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onSignInWithEmailAndPassword(Result<Account, AppException> result, WyattForm form) { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onSignInAnonymously(Result<Account, AppException> result, WyattForm form) { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onSignInWithGoogle(Result<Account, AppException> result, WyattForm form) { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | After setting up all these cubits you can provide them in the application. And that's it! | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | BlocProvider<SignUpCubit<int>>( | ||||||
|  |     create: (_) => ExampleSignUpCubit( | ||||||
|  |         authenticationRepository: authenticationRepository, | ||||||
|  |     ), | ||||||
|  | ), | ||||||
|  | BlocProvider<SignInCubit<int>>( | ||||||
|  |     create: (_) => ExampleSignInCubit( | ||||||
|  |         authenticationRepository: authenticationRepository, | ||||||
|  |     ), | ||||||
|  | ), | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### Widgets | ||||||
|  | 
 | ||||||
|  | Widgets are provided to make your life easier. Starting with the `AuthenticationBuilder` which allows you to build according to the authentication state. | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | AuthenticationBuilder<int>( | ||||||
|  |     authenticated: (context, sessionWrapper) => Text( | ||||||
|  |         'Logged as ${sessionWrapper.session?.account.email} | GeneratedId is ${sessionWrapper.session?.data}'), | ||||||
|  |     unauthenticated: (context) => | ||||||
|  |         const Text('Not logged (unauthenticated)'), | ||||||
|  |     unknown: (context) => const Text('Not logged (unknown)'), | ||||||
|  | ), | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | A `BuildContext` extension is also available to access certain attributes more quickly. | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | Text('Home | ${context.account<AuthenticationCubit<int>, int>()?.email}'), | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Listeners are used to listen to the status of the sign in and sign up forms. | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | return SignInListener<int>( | ||||||
|  |     onError: (context, status, errorMessage) => ScaffoldMessenger.of(context) | ||||||
|  |     ..hideCurrentSnackBar() | ||||||
|  |     ..showSnackBar( | ||||||
|  |         SnackBar(content: Text(errorMessage ?? 'Sign In Failure')), | ||||||
|  |     ), | ||||||
|  |     child: ... | ||||||
|  | ); | ||||||
|  | ``` | ||||||
							
								
								
									
										6
									
								
								packages/wyatt_authentication_bloc/doc/api/__404error.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								packages/wyatt_authentication_bloc/doc/api/__404error.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | # 404 | ||||||
|  | 
 | ||||||
|  | Oops, something's gone wrong :-( | ||||||
|  | 
 | ||||||
|  | You've tried to visit a page that doesn't exist. Luckily this site has other | ||||||
|  | [pages](index.md). | ||||||
| @ -0,0 +1 @@ | |||||||
|  | [] | ||||||
							
								
								
									
										1
									
								
								packages/wyatt_authentication_bloc/doc/api/index.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packages/wyatt_authentication_bloc/doc/api/index.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										214
									
								
								packages/wyatt_authentication_bloc/doc/api/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								packages/wyatt_authentication_bloc/doc/api/index.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,214 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # wyatt_authentication_bloc - Dart API docs | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <!-- | ||||||
|  |  * Copyright (C) 2023 WYATT GROUP | ||||||
|  |  * Please see the AUTHORS file for details. | ||||||
|  | 
 | ||||||
|  |  * This program is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 3 of the License, or | ||||||
|  |  * any later version. | ||||||
|  | 
 | ||||||
|  |  * This program is distributed in the hope that it will be useful,  | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
|  | --> | ||||||
|  | <h1 id="flutter---authentication-bloc">Flutter - Authentication BLoC</h1><p align="left"> | ||||||
|  |   <a href="https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis"><img src="https://img.shields.io/badge/Style-Wyatt%20Analysis-blue.svg?style=flat-square" alt="Style: Wyatt Analysis"></a> | ||||||
|  |   <img src="https://img.shields.io/badge/SDK-Flutter-blue?style=flat-square" alt="SDK: Flutter"> | ||||||
|  | </p> | ||||||
|  | <p>Authentication Bloc for Flutter.</p> | ||||||
|  | <h2 id="features">Features</h2> | ||||||
|  | <ul> | ||||||
|  | <li>🧐 Wyatt Architecture</li> | ||||||
|  | <li>🧱 Entities | ||||||
|  | <ul> | ||||||
|  | <li>Account -> Contains account information from provider.</li> | ||||||
|  | <li>Session -> Contains account and associated data retrieved from an external source.</li> | ||||||
|  | <li>AuthenticationChangeEvent -> Describes an event in authentication change (sign in, sign up, sign out, etc...)</li> | ||||||
|  | <li>SessionWrapper -> Contains latest authentication change event and session.</li> | ||||||
|  | </ul> | ||||||
|  | </li> | ||||||
|  | <li>🔑 Powerful and secured authentication repository</li> | ||||||
|  | <li>🔥 Multiple data sources | ||||||
|  | <ul> | ||||||
|  | <li>Mock</li> | ||||||
|  | <li>Firebase</li> | ||||||
|  | </ul> | ||||||
|  | </li> | ||||||
|  | <li>🧊 Cubits, why make it complicated when you can make it simple? | ||||||
|  | <ul> | ||||||
|  | <li>Goes to the essential.</li> | ||||||
|  | </ul> | ||||||
|  | </li> | ||||||
|  | <li>📐 Consistent | ||||||
|  | <ul> | ||||||
|  | <li>Every class have same naming convention</li> | ||||||
|  | </ul> | ||||||
|  | </li> | ||||||
|  | <li>🧪 Tested</li> | ||||||
|  | <li>📚 Documented: <a href="./doc/api/index.md">available here</a></li> | ||||||
|  | </ul> | ||||||
|  | <h2 id="getting-started">Getting started</h2> | ||||||
|  | <p>Simply add <code>wyatt_authentication_bloc</code> in <code>pubspec.yaml</code> , then</p> | ||||||
|  | <pre class="language-dart"><code class="language-dart">import 'package:wyatt_authentication_bloc/wyatt_authentication_bloc.dart'; | ||||||
|  | </code></pre> | ||||||
|  | <h3 id="data-source">Data source</h3> | ||||||
|  | <p>The first step is to provide a data source.</p> | ||||||
|  | <pre class="language-dart"><code class="language-dart">getIt.registerLazySingleton<AuthenticationRemoteDataSource<int>>( | ||||||
|  |     () => AuthenticationFirebaseDataSourceImpl<int>( | ||||||
|  |         firebaseAuth: FirebaseAuth.instance, | ||||||
|  |         googleSignIn: | ||||||
|  |             GoogleSignIn(clientId: DefaultFirebaseOptions.ios.iosClientId)), | ||||||
|  | ); | ||||||
|  | </code></pre> | ||||||
|  | <blockquote> | ||||||
|  | <p>Here we use GetIt (see example project)</p> | ||||||
|  | </blockquote> | ||||||
|  | <h3 id="repository">Repository</h3> | ||||||
|  | <p>Then you can configure your repository.</p> | ||||||
|  | <pre class="language-dart"><code class="language-dart">final AuthenticationRepository<int> authenticationRepository = AuthenticationRepositoryImpl( | ||||||
|  |     authenticationRemoteDataSource: | ||||||
|  |         getIt<AuthenticationRemoteDataSource<int>>(), | ||||||
|  |     customPasswordValidator: const CustomPassword.pure(), | ||||||
|  |     extraSignUpInputs: [ | ||||||
|  |         FormInput( | ||||||
|  |         AuthFormField.confirmPassword, | ||||||
|  |         const ConfirmedPassword.pure(), | ||||||
|  |         metadata: const FormInputMetadata<void>(export: false), | ||||||
|  |         ), | ||||||
|  |     ], | ||||||
|  | ); | ||||||
|  | </code></pre> | ||||||
|  | <blockquote> | ||||||
|  | <p>Here we pass some extra inputs for the sign up, and a custom password validator.</p> | ||||||
|  | </blockquote> | ||||||
|  | <h3 id="cubits">Cubits</h3> | ||||||
|  | <p>It is necessary to implement each cubit. Don't panic, most of the work is already done 😊 you just have to customize the logic of these.</p> | ||||||
|  | <p>In each of these cubits it is necessary to overload the various callbacks.</p> | ||||||
|  | <blockquote> | ||||||
|  | <p>Here the associated data <code>Data</code> is a <code>int</code></p> | ||||||
|  | </blockquote> | ||||||
|  | <h4 id="authentication">Authentication</h4> | ||||||
|  | <p>In the authentication are managed, the refresh, the deletion of account or the disconnection.</p> | ||||||
|  | <pre class="language-dart"><code class="language-dart">class ExampleAuthenticationCubit extends AuthenticationCubit<int> { | ||||||
|  |   ExampleAuthenticationCubit({required super.authenticationRepository}); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onReauthenticate(Result<Account, AppException> result) async { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onRefresh(Result<Account, AppException> result) { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onSignInFromCache(SessionWrapper<int> wrapper) { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<void> onSignOut() { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<void> onDelete() { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </code></pre> | ||||||
|  | <h4 id="sign-up">Sign Up</h4> | ||||||
|  | <pre class="language-dart"><code class="language-dart">class ExampleSignUpCubit extends SignUpCubit<int> { | ||||||
|  |   ExampleSignUpCubit({ | ||||||
|  |     required super.authenticationRepository, | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onSignUpWithEmailAndPassword(Result<Account, AppException> result, WyattForm form) async { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | </code></pre> | ||||||
|  | <h4 id="sign-in">Sign In</h4> | ||||||
|  | <pre class="language-dart"><code class="language-dart">class ExampleSignInCubit extends SignInCubit<int> { | ||||||
|  |   ExampleSignInCubit({ | ||||||
|  |     required super.authenticationRepository, | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onSignInWithEmailAndPassword(Result<Account, AppException> result, WyattForm form) { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onSignInAnonymously(Result<Account, AppException> result, WyattForm form) { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<int?> onSignInWithGoogle(Result<Account, AppException> result, WyattForm form) { | ||||||
|  |     // TODO | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </code></pre> | ||||||
|  | <p>After setting up all these cubits you can provide them in the application. And that's it!</p> | ||||||
|  | <pre class="language-dart"><code class="language-dart">BlocProvider<SignUpCubit<int>>( | ||||||
|  |     create: (_) => ExampleSignUpCubit( | ||||||
|  |         authenticationRepository: authenticationRepository, | ||||||
|  |     ), | ||||||
|  | ), | ||||||
|  | BlocProvider<SignInCubit<int>>( | ||||||
|  |     create: (_) => ExampleSignInCubit( | ||||||
|  |         authenticationRepository: authenticationRepository, | ||||||
|  |     ), | ||||||
|  | ), | ||||||
|  | </code></pre> | ||||||
|  | <h3 id="widgets">Widgets</h3> | ||||||
|  | <p>Widgets are provided to make your life easier. Starting with the <code>AuthenticationBuilder</code> which allows you to build according to the authentication state.</p> | ||||||
|  | <pre class="language-dart"><code class="language-dart">AuthenticationBuilder<int>( | ||||||
|  |     authenticated: (context, sessionWrapper) => Text( | ||||||
|  |         'Logged as ${sessionWrapper.session?.account.email} | GeneratedId is ${sessionWrapper.session?.data}'), | ||||||
|  |     unauthenticated: (context) => | ||||||
|  |         const Text('Not logged (unauthenticated)'), | ||||||
|  |     unknown: (context) => const Text('Not logged (unknown)'), | ||||||
|  | ), | ||||||
|  | </code></pre> | ||||||
|  | <p>A <code>BuildContext</code> extension is also available to access certain attributes more quickly.</p> | ||||||
|  | <pre class="language-dart"><code class="language-dart">Text('Home | ${context.account<AuthenticationCubit<int>, int>()?.email}'), | ||||||
|  | </code></pre> | ||||||
|  | <p>Listeners are used to listen to the status of the sign in and sign up forms.</p> | ||||||
|  | <pre class="language-dart"><code class="language-dart">return SignInListener<int>( | ||||||
|  |     onError: (context, status, errorMessage) => ScaffoldMessenger.of(context) | ||||||
|  |     ..hideCurrentSnackBar() | ||||||
|  |     ..showSnackBar( | ||||||
|  |         SnackBar(content: Text(errorMessage ?? 'Sign In Failure')), | ||||||
|  |     ), | ||||||
|  |     child: ... | ||||||
|  | ); | ||||||
|  | </code></pre> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Libraries | ||||||
|  | 
 | ||||||
|  | ##### [wyatt_authentication_bloc](wyatt_authentication_bloc/wyatt_authentication_bloc-library.md) | ||||||
|  | An authentication library for BLoC. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										6
									
								
								packages/wyatt_authentication_bloc/doc/api/search.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								packages/wyatt_authentication_bloc/doc/api/search.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | # 404 | ||||||
|  | 
 | ||||||
|  | Oops, something's gone wrong :-( | ||||||
|  | 
 | ||||||
|  | You've tried to visit a page that doesn't exist. Luckily this site has other | ||||||
|  | [pages](index.md). | ||||||
| @ -0,0 +1,237 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # Account class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Represents a user <a href="../wyatt_authentication_bloc/Account-class.md">Account</a> in the  | ||||||
|  | various identity provisioning systems.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Inheritance** | ||||||
|  | 
 | ||||||
|  | - [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) | ||||||
|  | - [Equatable](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable-class.html) | ||||||
|  | - Account | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Implementers** | ||||||
|  | 
 | ||||||
|  | - [AccountModel](../wyatt_authentication_bloc/AccountModel-class.md) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [Account](../wyatt_authentication_bloc/Account/Account.md) ({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) id, required [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) isAnonymous, required [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) emailVerified, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) providerId, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? email, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? phoneNumber, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? photoURL, [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? creationTime, [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? lastSignInTime, [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)? isNewUser, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? accessToken, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? refreshToken}) | ||||||
|  | 
 | ||||||
|  |   _const_  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [accessToken](../wyatt_authentication_bloc/Account/accessToken.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The user access token   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [creationTime](../wyatt_authentication_bloc/Account/creationTime.md) → [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the users account creation time.   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [email](../wyatt_authentication_bloc/Account/email.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The users email address.   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [emailVerified](../wyatt_authentication_bloc/Account/emailVerified.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns whether the users email address has been verified.   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [id](../wyatt_authentication_bloc/Account/id.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The user's unique ID.   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [isAnonymous](../wyatt_authentication_bloc/Account/isAnonymous.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns whether the user is a anonymous.   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [isNewUser](../wyatt_authentication_bloc/Account/isNewUser.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Whether the user account has been recently created.   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [lastSignInTime](../wyatt_authentication_bloc/Account/lastSignInTime.md) → [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | When the user last signed in as dictated by the server clock.   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [phoneNumber](../wyatt_authentication_bloc/Account/phoneNumber.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the users phone number.   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [photoURL](../wyatt_authentication_bloc/Account/photoURL.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a photo URL for the user.   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [props](../wyatt_authentication_bloc/Account/props.md) → [List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)?> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The list of properties that will be used to determine whether | ||||||
|  | two instances are equal.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [providerId](../wyatt_authentication_bloc/Account/providerId.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The provider ID for the user.   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [refreshToken](../wyatt_authentication_bloc/Account/refreshToken.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The user refresh token   | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [stringify](../wyatt_authentication_bloc/Account/stringify.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | If set to <code>true</code>, the <a href="https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html">toString</a> method will be overridden to output | ||||||
|  | this instance's <a href="../wyatt_authentication_bloc/Account/props.md">props</a>.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,43 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # Account constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const | ||||||
|  | Account({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) id, required [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) isAnonymous, required [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) emailVerified, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) providerId, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? email, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? phoneNumber, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? photoURL, [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? creationTime, [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? lastSignInTime, [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)? isNewUser, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? accessToken, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? refreshToken}) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | const Account({ | ||||||
|  |   required this.id, | ||||||
|  |   required this.isAnonymous, | ||||||
|  |   required this.emailVerified, | ||||||
|  |   required this.providerId, | ||||||
|  |   this.email, | ||||||
|  |   this.phoneNumber, | ||||||
|  |   this.photoURL, | ||||||
|  |   this.creationTime, | ||||||
|  |   this.lastSignInTime, | ||||||
|  |   this.isNewUser, | ||||||
|  |   this.accessToken, | ||||||
|  |   this.refreshToken, | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # accessToken property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? accessToken | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>The user access token</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final String? accessToken; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # creationTime property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? creationTime | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Returns the users account creation time.</p> | ||||||
|  | <p>When this account was created as dictated by the server clock.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final DateTime? creationTime; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # email property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? email | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>The users email address.</p> | ||||||
|  | <p>Will be <code>null</code> if signing in anonymously.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final String? email; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # emailVerified property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) emailVerified | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Returns whether the users email address has been verified.</p> | ||||||
|  | <p>To send a verification email, see <code>SendEmailVerification</code>.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final bool emailVerified; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # id property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) id | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>The user's unique ID.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final String id; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # isAnonymous property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) isAnonymous | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Returns whether the user is a anonymous.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final bool isAnonymous; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # isNewUser property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)? isNewUser | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Whether the user account has been recently created.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final bool? isNewUser; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # lastSignInTime property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? lastSignInTime | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>When the user last signed in as dictated by the server clock.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final DateTime? lastSignInTime; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,36 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # phoneNumber property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? phoneNumber | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Returns the users phone number.</p> | ||||||
|  | <p>This property will be <code>null</code> if the user has not signed in or been has | ||||||
|  | their phone number linked.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final String? phoneNumber; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,36 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # photoURL property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? photoURL | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Returns a photo URL for the user.</p> | ||||||
|  | <p>This property will be populated if the user has signed in or been linked | ||||||
|  | with a 3rd party OAuth provider (such as Google).</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final String? photoURL; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,55 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # props property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Annotations** | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | [List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)?> props | ||||||
|  |    | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>The list of properties that will be used to determine whether | ||||||
|  | two instances are equal.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | List<Object?> get props => [ | ||||||
|  |       id, | ||||||
|  |       isAnonymous, | ||||||
|  |       email, | ||||||
|  |       emailVerified, | ||||||
|  |       phoneNumber, | ||||||
|  |       photoURL, | ||||||
|  |       creationTime, | ||||||
|  |       lastSignInTime, | ||||||
|  |       providerId, | ||||||
|  |       isNewUser, | ||||||
|  |       accessToken, | ||||||
|  |       refreshToken, | ||||||
|  |     ]; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # providerId property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) providerId | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>The provider ID for the user.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final String providerId; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # refreshToken property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? refreshToken | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>The user refresh token</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final String? refreshToken; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,47 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # stringify property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Annotations** | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) stringify | ||||||
|  |    | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>If set to <code>true</code>, the <a href="https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html">toString</a> method will be overridden to output | ||||||
|  | this instance's <a href="../../wyatt_authentication_bloc/Account/props.md">props</a>.</p> | ||||||
|  | <p>A global default value for <a href="../../wyatt_authentication_bloc/Account/stringify.md">stringify</a> can be set using | ||||||
|  | <code>EquatableConfig.stringify</code>.</p> | ||||||
|  | <p>If this instance's <a href="../../wyatt_authentication_bloc/Account/stringify.md">stringify</a> is set to null, the value of | ||||||
|  | <code>EquatableConfig.stringify</code> will be used instead. This defaults to | ||||||
|  | <code>false</code>.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | bool get stringify => true; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,247 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AccountModel class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Account Model to parse Firebase User data</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Inheritance** | ||||||
|  | 
 | ||||||
|  | - [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) | ||||||
|  | - [Equatable](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable-class.html) | ||||||
|  | - [Account](../wyatt_authentication_bloc/Account-class.md) | ||||||
|  | - AccountModel | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [AccountModel.fromFirebaseUser](../wyatt_authentication_bloc/AccountModel/AccountModel.fromFirebaseUser.md) ([User](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/User-class.html)? user, {[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? accessToken}) | ||||||
|  | 
 | ||||||
|  |    _factory_ | ||||||
|  | 
 | ||||||
|  | [AccountModel.fromFirebaseUserCredential](../wyatt_authentication_bloc/AccountModel/AccountModel.fromFirebaseUserCredential.md) ([UserCredential](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/UserCredential-class.html)? userCredential) | ||||||
|  | 
 | ||||||
|  |    _factory_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [accessToken](../wyatt_authentication_bloc/Account/accessToken.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The user access token   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [creationTime](../wyatt_authentication_bloc/Account/creationTime.md) → [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the users account creation time.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [email](../wyatt_authentication_bloc/Account/email.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The users email address.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [emailVerified](../wyatt_authentication_bloc/Account/emailVerified.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns whether the users email address has been verified.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [id](../wyatt_authentication_bloc/Account/id.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The user's unique ID.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [isAnonymous](../wyatt_authentication_bloc/Account/isAnonymous.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns whether the user is a anonymous.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [isNewUser](../wyatt_authentication_bloc/Account/isNewUser.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Whether the user account has been recently created.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [lastSignInTime](../wyatt_authentication_bloc/Account/lastSignInTime.md) → [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | When the user last signed in as dictated by the server clock.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [phoneNumber](../wyatt_authentication_bloc/Account/phoneNumber.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns the users phone number.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [photoURL](../wyatt_authentication_bloc/Account/photoURL.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a photo URL for the user.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [props](../wyatt_authentication_bloc/Account/props.md) → [List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)?> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The list of properties that will be used to determine whether | ||||||
|  | two instances are equal.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [providerId](../wyatt_authentication_bloc/Account/providerId.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The provider ID for the user.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [refreshToken](../wyatt_authentication_bloc/AccountModel/refreshToken.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The user refresh token   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [stringify](../wyatt_authentication_bloc/Account/stringify.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | If set to <code>true</code>, the <a href="https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html">toString</a> method will be overridden to output | ||||||
|  | this instance's <a href="../wyatt_authentication_bloc/Account/props.md">props</a>.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [user](../wyatt_authentication_bloc/AccountModel/user.md) → [User](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/User-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,51 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AccountModel.fromFirebaseUser constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | AccountModel.fromFirebaseUser([User](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/User-class.html)? user, {[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? accessToken}) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | factory AccountModel.fromFirebaseUser(User? user, {String? accessToken}) { | ||||||
|  |   if (user != null) { | ||||||
|  |     final providerId = | ||||||
|  |         (user.providerData.isEmpty) ? '' : user.providerData.first.providerId; | ||||||
|  |     return AccountModel._( | ||||||
|  |       user: user, | ||||||
|  |       id: user.uid, | ||||||
|  |       emailVerified: user.emailVerified, | ||||||
|  |       isAnonymous: user.isAnonymous, | ||||||
|  |       providerId: providerId, | ||||||
|  |       creationTime: user.metadata.creationTime, | ||||||
|  |       lastSignInTime: user.metadata.lastSignInTime, | ||||||
|  |       isNewUser: false, | ||||||
|  |       email: user.email, | ||||||
|  |       phoneNumber: user.phoneNumber, | ||||||
|  |       photoURL: user.photoURL, | ||||||
|  |       accessToken: accessToken, | ||||||
|  |     ); | ||||||
|  |   } else { | ||||||
|  |     throw ModelParsingFailureFirebase('null-user', 'User cannot be null'); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,54 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AccountModel.fromFirebaseUserCredential constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | AccountModel.fromFirebaseUserCredential([UserCredential](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/UserCredential-class.html)? userCredential) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | factory AccountModel.fromFirebaseUserCredential( | ||||||
|  |   UserCredential? userCredential, | ||||||
|  | ) { | ||||||
|  |   final user = userCredential?.user; | ||||||
|  |   if (user != null) { | ||||||
|  |     final providerId = | ||||||
|  |         (user.providerData.isEmpty) ? '' : user.providerData.first.providerId; | ||||||
|  |     return AccountModel._( | ||||||
|  |       user: user, | ||||||
|  |       id: user.uid, | ||||||
|  |       emailVerified: user.emailVerified, | ||||||
|  |       isAnonymous: user.isAnonymous, | ||||||
|  |       providerId: providerId, | ||||||
|  |       creationTime: user.metadata.creationTime, | ||||||
|  |       lastSignInTime: user.metadata.lastSignInTime, | ||||||
|  |       isNewUser: userCredential?.additionalUserInfo?.isNewUser, | ||||||
|  |       email: user.email, | ||||||
|  |       phoneNumber: user.phoneNumber, | ||||||
|  |       photoURL: user.photoURL, | ||||||
|  |       accessToken: userCredential?.credential?.accessToken, | ||||||
|  |     ); | ||||||
|  |   } else { | ||||||
|  |     throw ModelParsingFailureFirebase('null-user', 'User cannot be null'); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,41 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # refreshToken property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Annotations** | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? refreshToken | ||||||
|  |    | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>The user refresh token</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | String? get refreshToken => user?.refreshToken; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # user property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [User](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/User-class.html)? user | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final User? user; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,137 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # ApplyActionCodeFailureFirebase class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Thrown if during the apply action code process if a failure occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Inheritance** | ||||||
|  | 
 | ||||||
|  | - [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) | ||||||
|  | - [AuthenticationFailureInterface](../wyatt_authentication_bloc/AuthenticationFailureInterface-class.md) | ||||||
|  | - [ApplyActionCodeFailureInterface](../wyatt_authentication_bloc/ApplyActionCodeFailureInterface-class.md) | ||||||
|  | - ApplyActionCodeFailureFirebase | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [ApplyActionCodeFailureFirebase](../wyatt_authentication_bloc/ApplyActionCodeFailureFirebase/ApplyActionCodeFailureFirebase.md) ([[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? code, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? msg]) | ||||||
|  | 
 | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  | [ApplyActionCodeFailureFirebase.fromCode](../wyatt_authentication_bloc/ApplyActionCodeFailureFirebase/ApplyActionCodeFailureFirebase.fromCode.md) ([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code) | ||||||
|  | 
 | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [code](../wyatt_authentication_bloc/AuthenticationFailureInterface/code.md) ↔ [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">read / write</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [message](../wyatt_authentication_bloc/AuthenticationFailureInterface/message.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [msg](../wyatt_authentication_bloc/AuthenticationFailureInterface/msg.md) ↔ [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">read / write</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](../wyatt_authentication_bloc/AuthenticationFailureInterface/toString.md)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,49 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # ApplyActionCodeFailureFirebase.fromCode constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ApplyActionCodeFailureFirebase.fromCode([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | ApplyActionCodeFailureFirebase.fromCode(String code) : super.fromCode(code) { | ||||||
|  |   switch (code) { | ||||||
|  |     case 'expired-action-code': | ||||||
|  |       msg = 'Action code has expired.'; | ||||||
|  |       break; | ||||||
|  |     case 'invalid-action-code': | ||||||
|  |       msg = 'Action code is invalid.'; | ||||||
|  |       break; | ||||||
|  |     case 'user-disabled': | ||||||
|  |       msg = 'This user has been disabled. Please contact support for help.'; | ||||||
|  |       break; | ||||||
|  |     case 'user-not-found': | ||||||
|  |       msg = 'Email is not found, please create an account.'; | ||||||
|  |       break; | ||||||
|  | 
 | ||||||
|  |     default: | ||||||
|  |       this.code = 'unknown'; | ||||||
|  |       msg = 'An unknown error occurred.'; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,31 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # ApplyActionCodeFailureFirebase constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ApplyActionCodeFailureFirebase([[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? code, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? msg]) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | ApplyActionCodeFailureFirebase([String? code, String? msg]) | ||||||
|  |     : super(code ?? 'unknown', msg ?? 'An unknown error occurred.'); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,139 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # ApplyActionCodeFailureInterface class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Thrown if during the apply action code process if a failure occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Inheritance** | ||||||
|  | 
 | ||||||
|  | - [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) | ||||||
|  | - [AuthenticationFailureInterface](../wyatt_authentication_bloc/AuthenticationFailureInterface-class.md) | ||||||
|  | - ApplyActionCodeFailureInterface | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Implementers** | ||||||
|  | 
 | ||||||
|  | - [ApplyActionCodeFailureFirebase](../wyatt_authentication_bloc/ApplyActionCodeFailureFirebase-class.md) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [ApplyActionCodeFailureInterface](../wyatt_authentication_bloc/ApplyActionCodeFailureInterface/ApplyActionCodeFailureInterface.md) ([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code, [String](https://api.flutter.dev/flutter/dart-core/String-class.html) msg) | ||||||
|  | 
 | ||||||
|  | Thrown if during the apply action code process if a failure occurs.    | ||||||
|  | 
 | ||||||
|  | [ApplyActionCodeFailureInterface.fromCode](../wyatt_authentication_bloc/ApplyActionCodeFailureInterface/ApplyActionCodeFailureInterface.fromCode.md) ([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code) | ||||||
|  | 
 | ||||||
|  | Thrown if during the apply action code process if a failure occurs.    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [code](../wyatt_authentication_bloc/AuthenticationFailureInterface/code.md) ↔ [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">read / write</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [message](../wyatt_authentication_bloc/AuthenticationFailureInterface/message.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [msg](../wyatt_authentication_bloc/AuthenticationFailureInterface/msg.md) ↔ [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">read / write</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](../wyatt_authentication_bloc/AuthenticationFailureInterface/toString.md)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,31 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # ApplyActionCodeFailureInterface.fromCode constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ApplyActionCodeFailureInterface.fromCode([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Thrown if during the apply action code process if a failure occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | ApplyActionCodeFailureInterface.fromCode(super.code) : super.fromCode(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,31 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # ApplyActionCodeFailureInterface constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ApplyActionCodeFailureInterface([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code, [String](https://api.flutter.dev/flutter/dart-core/String-class.html) msg) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Thrown if during the apply action code process if a failure occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | ApplyActionCodeFailureInterface(super.code, super.msg); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,122 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthFormField class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Default authentication form fields name</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [AuthFormField](../wyatt_authentication_bloc/AuthFormField/AuthFormField.md) () | ||||||
|  | 
 | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](https://api.flutter.dev/flutter/dart-core/Object/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constants | ||||||
|  | 
 | ||||||
|  | ##### [confirmPassword](../wyatt_authentication_bloc/AuthFormField/confirmPassword-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Confirm Password field: <code>wyattConfirmPasswordField</code>   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [email](../wyatt_authentication_bloc/AuthFormField/email-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Email field: <code>wyattEmailField</code>   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [password](../wyatt_authentication_bloc/AuthFormField/password-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Password field: <code>wyattPasswordField</code>   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,25 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthFormField constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | AuthFormField() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # confirmPassword constant | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) const confirmPassword | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Confirm Password field: <code>wyattConfirmPasswordField</code></p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | static const confirmPassword = 'wyattConfirmPasswordField'; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # email constant | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) const email | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Email field: <code>wyattEmailField</code></p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | static const email = 'wyattEmailField'; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # password constant | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) const password | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Password field: <code>wyattPasswordField</code></p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | static const password = 'wyattPasswordField'; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,131 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthFormName class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Default authentication form name</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [AuthFormName](../wyatt_authentication_bloc/AuthFormName/AuthFormName.md) () | ||||||
|  | 
 | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](https://api.flutter.dev/flutter/dart-core/Object/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constants | ||||||
|  | 
 | ||||||
|  | ##### [editAccountForm](../wyatt_authentication_bloc/AuthFormName/editAccountForm-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Edit account form: <code>wyattEditAccountForm</code>   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [passwordResetForm](../wyatt_authentication_bloc/AuthFormName/passwordResetForm-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Password reset form: <code>wyattPasswordResetForm</code>   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signInForm](../wyatt_authentication_bloc/AuthFormName/signInForm-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Sign In form: <code>wyattSignInForm</code>   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signUpForm](../wyatt_authentication_bloc/AuthFormName/signUpForm-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Sign Up form: <code>wyattSignUpForm</code>   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,25 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthFormName constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | AuthFormName() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # editAccountForm constant | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) const editAccountForm | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Edit account form: <code>wyattEditAccountForm</code></p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | static const String editAccountForm = 'wyattEditAccountForm'; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # passwordResetForm constant | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) const passwordResetForm | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Password reset form: <code>wyattPasswordResetForm</code></p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | static const String passwordResetForm = 'wyattPasswordResetForm'; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # signInForm constant | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) const signInForm | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Sign In form: <code>wyattSignInForm</code></p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | static const String signInForm = 'wyattSignInForm'; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # signUpForm constant | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) const signUpForm | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Sign Up form: <code>wyattSignUpForm</code></p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | static const String signUpForm = 'wyattSignUpForm'; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,216 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationBuilder<Data> class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Inheritance** | ||||||
|  | 
 | ||||||
|  | - [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) | ||||||
|  | - [DiagnosticableTree](https://api.flutter.dev/flutter/foundation/DiagnosticableTree-class.html) | ||||||
|  | - [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) | ||||||
|  | - [StatelessWidget](https://api.flutter.dev/flutter/widgets/StatelessWidget-class.html) | ||||||
|  | - AuthenticationBuilder | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [AuthenticationBuilder](../wyatt_authentication_bloc/AuthenticationBuilder/AuthenticationBuilder.md) ({required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) authenticated([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context, [SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> sessionWrapper), required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) unauthenticated([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context), required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) unknown([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context), [Key](https://api.flutter.dev/flutter/foundation/Key-class.html)? key}) | ||||||
|  | 
 | ||||||
|  |   _const_  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [authenticated](../wyatt_authentication_bloc/AuthenticationBuilder/authenticated.md) → [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context, [SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> sessionWrapper) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://api.flutter.dev/flutter/widgets/Widget/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [key](https://api.flutter.dev/flutter/widgets/Widget/key.html) → [Key](https://api.flutter.dev/flutter/foundation/Key-class.html)? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Controls how one widget replaces another widget in the tree.   | ||||||
|  | _<span class="feature">final</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [unauthenticated](../wyatt_authentication_bloc/AuthenticationBuilder/unauthenticated.md) → [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [unknown](../wyatt_authentication_bloc/AuthenticationBuilder/unknown.md) → [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [build](../wyatt_authentication_bloc/AuthenticationBuilder/build.md)([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context) [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Describes the part of the user interface represented by this widget.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [createElement](https://api.flutter.dev/flutter/widgets/StatelessWidget/createElement.html)() [StatelessElement](https://api.flutter.dev/flutter/widgets/StatelessElement-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Creates a <a href="https://api.flutter.dev/flutter/widgets/StatelessElement-class.html">StatelessElement</a> to manage this widget's location in the tree.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [debugDescribeChildren](https://api.flutter.dev/flutter/foundation/DiagnosticableTree/debugDescribeChildren.html)() [List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[DiagnosticsNode](https://api.flutter.dev/flutter/foundation/DiagnosticsNode-class.html)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a list of <code>DiagnosticsNode</code> objects describing this node's | ||||||
|  | children.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [debugFillProperties](https://api.flutter.dev/flutter/widgets/Widget/debugFillProperties.html)([DiagnosticPropertiesBuilder](https://api.flutter.dev/flutter/foundation/DiagnosticPropertiesBuilder-class.html) properties) void | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Add additional properties associated with the node.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toDiagnosticsNode](https://api.flutter.dev/flutter/foundation/DiagnosticableTree/toDiagnosticsNode.html)({[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? name, [DiagnosticsTreeStyle](https://api.flutter.dev/flutter/foundation/DiagnosticsTreeStyle.html)? style}) [DiagnosticsNode](https://api.flutter.dev/flutter/foundation/DiagnosticsNode-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a debug representation of the object that is used by debugging | ||||||
|  | tools and by <a href="https://api.flutter.dev/flutter/foundation/DiagnosticsNode/toStringDeep.html">DiagnosticsNode.toStringDeep</a>.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](https://api.flutter.dev/flutter/foundation/Diagnosticable/toString.html)({[DiagnosticLevel](https://api.flutter.dev/flutter/foundation/DiagnosticLevel.html) minLevel = DiagnosticLevel.info}) [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toStringDeep](https://api.flutter.dev/flutter/foundation/DiagnosticableTree/toStringDeep.html)({[String](https://api.flutter.dev/flutter/dart-core/String-class.html) prefixLineOne = '', [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? prefixOtherLines, [DiagnosticLevel](https://api.flutter.dev/flutter/foundation/DiagnosticLevel.html) minLevel = DiagnosticLevel.debug}) [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a string representation of this node and its descendants.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toStringShallow](https://api.flutter.dev/flutter/foundation/DiagnosticableTree/toStringShallow.html)({[String](https://api.flutter.dev/flutter/dart-core/String-class.html) joiner = ', ', [DiagnosticLevel](https://api.flutter.dev/flutter/foundation/DiagnosticLevel.html) minLevel = DiagnosticLevel.debug}) [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns a one-line detailed description of the object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toStringShort](https://api.flutter.dev/flutter/widgets/Widget/toStringShort.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A short, textual description of this widget.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://api.flutter.dev/flutter/widgets/Widget/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationBuilder<Data> constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const | ||||||
|  | AuthenticationBuilder<Data>({required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) authenticated([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context, [SessionWrapper](../../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> sessionWrapper), required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) unauthenticated([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context), required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) unknown([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context), [Key](https://api.flutter.dev/flutter/foundation/Key-class.html)? key}) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | const AuthenticationBuilder({ | ||||||
|  |   required this.authenticated, | ||||||
|  |   required this.unauthenticated, | ||||||
|  |   required this.unknown, | ||||||
|  |   super.key, | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,36 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # authenticated property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context, [SessionWrapper](../../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> sessionWrapper) authenticated | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final Widget Function( | ||||||
|  |   BuildContext context, | ||||||
|  |   SessionWrapper<Data> sessionWrapper, | ||||||
|  | ) authenticated; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,85 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # build method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) build | ||||||
|  | ([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context) | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Describes the part of the user interface represented by this widget.</p> | ||||||
|  | <p>The framework calls this method when this widget is inserted into the tree | ||||||
|  | in a given <a href="https://api.flutter.dev/flutter/widgets/BuildContext-class.html">BuildContext</a> and when the dependencies of this widget change | ||||||
|  | (e.g., an <a href="https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html">InheritedWidget</a> referenced by this widget changes). This | ||||||
|  | method can potentially be called in every frame and should not have any side | ||||||
|  | effects beyond building a widget.</p> | ||||||
|  | <p>The framework replaces the subtree below this widget with the widget | ||||||
|  | returned by this method, either by updating the existing subtree or by | ||||||
|  | removing the subtree and inflating a new subtree, depending on whether the | ||||||
|  | widget returned by this method can update the root of the existing | ||||||
|  | subtree, as determined by calling <a href="https://api.flutter.dev/flutter/widgets/Widget/canUpdate.html">Widget.canUpdate</a>.</p> | ||||||
|  | <p>Typically implementations return a newly created constellation of widgets | ||||||
|  | that are configured with information from this widget's constructor and | ||||||
|  | from the given <a href="https://api.flutter.dev/flutter/widgets/BuildContext-class.html">BuildContext</a>.</p> | ||||||
|  | <p>The given <a href="https://api.flutter.dev/flutter/widgets/BuildContext-class.html">BuildContext</a> contains information about the location in the | ||||||
|  | tree at which this widget is being built. For example, the context | ||||||
|  | provides the set of inherited widgets for this location in the tree. A | ||||||
|  | given widget might be built with multiple different <a href="https://api.flutter.dev/flutter/widgets/BuildContext-class.html">BuildContext</a> | ||||||
|  | arguments over time if the widget is moved around the tree or if the | ||||||
|  | widget is inserted into the tree in multiple places at once.</p> | ||||||
|  | <p>The implementation of this method must only depend on:</p> | ||||||
|  | <ul> | ||||||
|  | <li>the fields of the widget, which themselves must not change over time, | ||||||
|  | and</li> | ||||||
|  | <li>any ambient state obtained from the <code>context</code> using | ||||||
|  | <a href="https://api.flutter.dev/flutter/widgets/BuildContext/dependOnInheritedWidgetOfExactType.html">BuildContext.dependOnInheritedWidgetOfExactType</a>.</li> | ||||||
|  | </ul> | ||||||
|  | <p>If a widget's <a href="../../wyatt_authentication_bloc/AuthenticationBuilder/build.md">build</a> method is to depend on anything else, use a | ||||||
|  | <a href="https://api.flutter.dev/flutter/widgets/StatefulWidget-class.html">StatefulWidget</a> instead.</p> | ||||||
|  | <p>See also:</p> | ||||||
|  | <ul> | ||||||
|  | <li><a href="https://api.flutter.dev/flutter/widgets/StatelessWidget-class.html">StatelessWidget</a>, which contains the discussion on performance considerations.</li> | ||||||
|  | </ul> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Widget build(BuildContext context) => | ||||||
|  |     BlocBuilder<AuthenticationCubit<Data>, AuthenticationState<Data>>( | ||||||
|  |       builder: (context, state) { | ||||||
|  |         if (state.status == AuthenticationStatus.authenticated) { | ||||||
|  |           if (state.wrapper != null) { | ||||||
|  |             return authenticated(context, state.wrapper!); | ||||||
|  |           } else { | ||||||
|  |             return unauthenticated(context); | ||||||
|  |           } | ||||||
|  |         } else if (state.status == AuthenticationStatus.unauthenticated) { | ||||||
|  |           return unauthenticated(context); | ||||||
|  |         } else { | ||||||
|  |           return unknown(context); | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |     ); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # unauthenticated property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context) unauthenticated | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final Widget Function(BuildContext context) unauthenticated; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # unknown property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context) unknown | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final Widget Function(BuildContext context) unknown; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,137 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationChangeEvent class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Represents an event initiated by a change in | ||||||
|  | the user's authentication status.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Inheritance** | ||||||
|  | 
 | ||||||
|  | - [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) | ||||||
|  | - [Equatable](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable-class.html) | ||||||
|  | - AuthenticationChangeEvent | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Implementers** | ||||||
|  | 
 | ||||||
|  | - [DeletedEvent](../wyatt_authentication_bloc/DeletedEvent-class.md) | ||||||
|  | - [ReauthenticatedEvent](../wyatt_authentication_bloc/ReauthenticatedEvent-class.md) | ||||||
|  | - [RefreshedEvent](../wyatt_authentication_bloc/RefreshedEvent-class.md) | ||||||
|  | - [SignedInEvent](../wyatt_authentication_bloc/SignedInEvent-class.md) | ||||||
|  | - [SignedInFromCacheEvent](../wyatt_authentication_bloc/SignedInFromCacheEvent-class.md) | ||||||
|  | - [SignedOutEvent](../wyatt_authentication_bloc/SignedOutEvent-class.md) | ||||||
|  | - [SignedUpEvent](../wyatt_authentication_bloc/SignedUpEvent-class.md) | ||||||
|  | - [UnknownAuthenticationEvent](../wyatt_authentication_bloc/UnknownAuthenticationEvent-class.md) | ||||||
|  | - [UpdatedEvent](../wyatt_authentication_bloc/UpdatedEvent-class.md) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [AuthenticationChangeEvent](../wyatt_authentication_bloc/AuthenticationChangeEvent/AuthenticationChangeEvent.md) () | ||||||
|  | 
 | ||||||
|  |   _const_  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [props](../wyatt_authentication_bloc/AuthenticationChangeEvent/props.md) → [List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)?> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The list of properties that will be used to determine whether | ||||||
|  | two instances are equal.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [stringify](../wyatt_authentication_bloc/AuthenticationChangeEvent/stringify.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | If set to <code>true</code>, the <a href="https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html">toString</a> method will be overridden to output | ||||||
|  | this instance's <a href="../wyatt_authentication_bloc/AuthenticationChangeEvent/props.md">props</a>.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,30 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationChangeEvent constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const | ||||||
|  | AuthenticationChangeEvent() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | const AuthenticationChangeEvent(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,42 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # props property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Annotations** | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | [List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)?> props | ||||||
|  |    | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>The list of properties that will be used to determine whether | ||||||
|  | two instances are equal.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | List<Object?> get props => []; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,47 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # stringify property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Annotations** | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) stringify | ||||||
|  |    | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>If set to <code>true</code>, the <a href="https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html">toString</a> method will be overridden to output | ||||||
|  | this instance's <a href="../../wyatt_authentication_bloc/AuthenticationChangeEvent/props.md">props</a>.</p> | ||||||
|  | <p>A global default value for <a href="../../wyatt_authentication_bloc/AuthenticationChangeEvent/stringify.md">stringify</a> can be set using | ||||||
|  | <code>EquatableConfig.stringify</code>.</p> | ||||||
|  | <p>If this instance's <a href="../../wyatt_authentication_bloc/AuthenticationChangeEvent/stringify.md">stringify</a> is set to null, the value of | ||||||
|  | <code>EquatableConfig.stringify</code> will be used instead. This defaults to | ||||||
|  | <code>false</code>.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | bool get stringify => true; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,292 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationCubit<Data> class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Abstract authentication cubit class needs to be implemented in application.</p> | ||||||
|  | <p>This cubit is in charge of managing the global authentication state of | ||||||
|  | the application.</p> | ||||||
|  | <p>Its here you can override every callbacks and add your custom logic.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Inheritance** | ||||||
|  | 
 | ||||||
|  | - [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) | ||||||
|  | - [BlocBase](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase-class.html)<[AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data>> | ||||||
|  | - [Cubit](https://pub.dev/documentation/bloc/8.1.0/bloc/Cubit-class.html)<[AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data>> | ||||||
|  | - AuthenticationCubit | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [AuthenticationCubit](../wyatt_authentication_bloc/AuthenticationCubit/AuthenticationCubit.md) ({required [AuthenticationRepository](../wyatt_authentication_bloc/AuthenticationRepository-class.md)<Data> authenticationRepository}) | ||||||
|  | 
 | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [authenticationRepository](../wyatt_authentication_bloc/AuthenticationCubit/authenticationRepository.md) → [AuthenticationRepository](../wyatt_authentication_bloc/AuthenticationRepository-class.md)<Data> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [isClosed](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/isClosed.html) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Whether the bloc is closed.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [state](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/state.html) → [AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The current <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/state.html">state</a>.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [stream](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/stream.html) → [Stream](https://api.flutter.dev/flutter/dart-async/Stream-class.html)<[AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data>> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The current <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/stream.html">stream</a> of states.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [addError](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/addError.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) error, [[StackTrace](https://api.flutter.dev/flutter/dart-core/StackTrace-class.html)? stackTrace]) void | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Reports an <code>error</code> which triggers <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/onError.html">onError</a> with an optional <a href="https://api.flutter.dev/flutter/dart-core/StackTrace-class.html">StackTrace</a>.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [close](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/close.html)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Closes the instance. | ||||||
|  | This method should be called when the instance is no longer needed. | ||||||
|  | Once <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/close.html">close</a> is called, the instance can no longer be used.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [currentSession](../wyatt_authentication_bloc/AuthenticationCubit/currentSession.md)() [SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data>? | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Returns latest session wrapper.   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [delete](../wyatt_authentication_bloc/AuthenticationCubit/delete.md)() [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Delete account.   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [emit](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/emit.html)([AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data> state) void | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Updates the <code>state</code> to the provided <code>state</code>. | ||||||
|  | <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/emit.html">emit</a> does nothing if the <code>state</code> being emitted | ||||||
|  | is equal to the current <code>state</code>.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [onChange](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/onChange.html)([Change](https://pub.dev/documentation/bloc/8.1.0/bloc/Change-class.html)<[AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data>> change) void | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Called whenever a <code>change</code> occurs with the given <code>change</code>. | ||||||
|  | A <code>change</code> occurs when a new <code>state</code> is emitted. | ||||||
|  | <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/onChange.html">onChange</a> is called before the <code>state</code> of the <code>cubit</code> is updated. | ||||||
|  | <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/onChange.html">onChange</a> is a great spot to add logging/analytics for a specific <code>cubit</code>.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [onDelete](../wyatt_authentication_bloc/AuthenticationCubit/onDelete.md)() FutureOrResult<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This callback is triggered when the current account is deleted from | ||||||
|  | the remote.   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [onError](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/onError.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) error, [StackTrace](https://api.flutter.dev/flutter/dart-core/StackTrace-class.html) stackTrace) void | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Called whenever an <code>error</code> occurs and notifies <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocObserver/onError.html">BlocObserver.onError</a>.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [onReauthenticate](../wyatt_authentication_bloc/AuthenticationCubit/onReauthenticate.md)(Result<[Account](../wyatt_authentication_bloc/Account-class.md), AppException> result) FutureOrResult<Data?> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This callback is triggered when the account is re-authenticated   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [onRefresh](../wyatt_authentication_bloc/AuthenticationCubit/onRefresh.md)(Result<[Account](../wyatt_authentication_bloc/Account-class.md), AppException> result) FutureOrResult<Data?> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This callback is triggered when the account is refreshed.   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [onSignInFromCache](../wyatt_authentication_bloc/AuthenticationCubit/onSignInFromCache.md)([SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> wrapper) FutureOrResult<Data?> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This callback is triggered when the user is automaticcaly logged in from | ||||||
|  | the cache.   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [onSignOut](../wyatt_authentication_bloc/AuthenticationCubit/onSignOut.md)() FutureOrResult<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This callback is triggered when the user is logged out.   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [reauthenticate](../wyatt_authentication_bloc/AuthenticationCubit/reauthenticate.md)() [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Some security-sensitive actions—such as deleting an account, | ||||||
|  | setting a primary email address, and changing a password—require that | ||||||
|  | the user has recently signed in.   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [refresh](../wyatt_authentication_bloc/AuthenticationCubit/refresh.md)() [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Refreshes the current user, if signed in.   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signOut](../wyatt_authentication_bloc/AuthenticationCubit/signOut.md)() [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Signs out the current user. | ||||||
|  | It also clears the cache and the associated data.   | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](https://api.flutter.dev/flutter/dart-core/Object/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationCubit<Data> constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | AuthenticationCubit<Data>({required [AuthenticationRepository](../../wyatt_authentication_bloc/AuthenticationRepository-class.md)<Data> authenticationRepository}) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | AuthenticationCubit({ | ||||||
|  |   required this.authenticationRepository, | ||||||
|  | }) : super(const AuthenticationState.unknown()) { | ||||||
|  |   _listenForAuthenticationChanges(); | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # authenticationRepository property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [AuthenticationRepository](../../wyatt_authentication_bloc/AuthenticationRepository-class.md)<Data> authenticationRepository | ||||||
|  |    | ||||||
|  | _<span class="feature">final</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | final AuthenticationRepository<Data> authenticationRepository; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,37 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # currentSession method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [SessionWrapper](../../wyatt_authentication_bloc/SessionWrapper-class.md)<Data>? currentSession | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Returns latest session wrapper.</p> | ||||||
|  | <p>Contains latest event and latest session data (account + extra data)</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | SessionWrapper<Data>? currentSession() => _latestSession; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,44 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # delete method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void> delete | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Delete account.</p> | ||||||
|  | <p>Throws a DeleteAccountFailureInterface if | ||||||
|  | an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | FutureOr<void> delete() async => CustomRoutine<void, void>( | ||||||
|  |       routine: authenticationRepository.delete, | ||||||
|  |       attachedLogic: (routineResult) => onDelete(), | ||||||
|  |       onError: addError, | ||||||
|  |       onSuccess: (result, data) => authenticationRepository | ||||||
|  |           .addSession(SessionWrapper<Data>(event: const DeletedEvent())), | ||||||
|  |     ).call(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,38 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # onDelete method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | FutureOrResult<void> onDelete | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>This callback is triggered when the current account is deleted from | ||||||
|  | the remote.</p> | ||||||
|  | <p>For example: when the user wants to delete his account from Firebase</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | FutureOrResult<void> onDelete(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,38 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # onReauthenticate method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | FutureOrResult<Data?> onReauthenticate | ||||||
|  | (Result<[Account](../../wyatt_authentication_bloc/Account-class.md), AppException> result) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>This callback is triggered when the account is re-authenticated</p> | ||||||
|  | <p>For example: when the user is logged in and sign in | ||||||
|  | from an another provider</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | FutureOrResult<Data?> onReauthenticate(Result<Account, AppException> result); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,37 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # onRefresh method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | FutureOrResult<Data?> onRefresh | ||||||
|  | (Result<[Account](../../wyatt_authentication_bloc/Account-class.md), AppException> result) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>This callback is triggered when the account is refreshed.</p> | ||||||
|  | <p>For example: when the access token is refreshed.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | FutureOrResult<Data?> onRefresh(Result<Account, AppException> result); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,38 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # onSignInFromCache method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | FutureOrResult<Data?> onSignInFromCache | ||||||
|  | ([SessionWrapper](../../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> wrapper) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>This callback is triggered when the user is automaticcaly logged in from | ||||||
|  | the cache.</p> | ||||||
|  | <p>For example: when the user is sign in from the Firebase cache.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | FutureOrResult<Data?> onSignInFromCache(SessionWrapper<Data> wrapper); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,37 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # onSignOut method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | FutureOrResult<void> onSignOut | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>This callback is triggered when the user is logged out.</p> | ||||||
|  | <p>For example: when the user clicks on the logout button.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | FutureOrResult<void> onSignOut(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,53 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # reauthenticate method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void> reauthenticate | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Some security-sensitive actions—such as deleting an account, | ||||||
|  | setting a primary email address, and changing a password—require that | ||||||
|  | the user has recently signed in.</p> | ||||||
|  | <p>Throws a ReauthenticateFailureInterface if | ||||||
|  | an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | FutureOr<void> reauthenticate() async => CustomRoutine<Account, Data?>( | ||||||
|  |       routine: authenticationRepository.reauthenticate, | ||||||
|  |       attachedLogic: onReauthenticate, | ||||||
|  |       onError: addError, | ||||||
|  |       onSuccess: (result, data) => authenticationRepository.addSession( | ||||||
|  |         SessionWrapper( | ||||||
|  |           event: ReauthenticatedEvent(account: result), | ||||||
|  |           session: Session<Data>( | ||||||
|  |             account: result, | ||||||
|  |             data: data, | ||||||
|  |           ), | ||||||
|  |         ), | ||||||
|  |       ), | ||||||
|  |     ).call(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,49 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # refresh method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void> refresh | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Refreshes the current user, if signed in.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | FutureOr<void> refresh() async => CustomRoutine<Account, Data?>( | ||||||
|  |     routine: authenticationRepository.refresh, | ||||||
|  |     attachedLogic: onRefresh, | ||||||
|  |     onError: addError, | ||||||
|  |     onSuccess: (result, data) => authenticationRepository.addSession( | ||||||
|  |       SessionWrapper( | ||||||
|  |         event: RefreshedEvent(account: result), | ||||||
|  |         session: Session<Data>( | ||||||
|  |           account: result, | ||||||
|  |           data: data, | ||||||
|  |         ), | ||||||
|  |       ), | ||||||
|  |     ), | ||||||
|  |   ).call(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,43 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # signOut method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void> signOut | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Signs out the current user. | ||||||
|  | It also clears the cache and the associated data.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | FutureOr<void> signOut() async => CustomRoutine<void, void>( | ||||||
|  |       routine: authenticationRepository.signOut, | ||||||
|  |       attachedLogic: (routineResult) => onSignOut(), | ||||||
|  |       onError: addError, | ||||||
|  |       onSuccess: (result, data) => authenticationRepository | ||||||
|  |           .addSession(SessionWrapper<Data>(event: const SignedOutEvent())), | ||||||
|  |     ).call(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,159 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationFailureInterface class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Base exception used in Wyatt Authentication</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Implemented types** | ||||||
|  | 
 | ||||||
|  | - [Exception](https://api.flutter.dev/flutter/dart-core/Exception-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Implementers** | ||||||
|  | 
 | ||||||
|  | - [ApplyActionCodeFailureInterface](../wyatt_authentication_bloc/ApplyActionCodeFailureInterface-class.md) | ||||||
|  | - [ConfirmPasswordResetFailureInterface](../wyatt_authentication_bloc/ConfirmPasswordResetFailureInterface-class.md) | ||||||
|  | - [DeleteAccountFailureInterface](../wyatt_authentication_bloc/DeleteAccountFailureInterface-class.md) | ||||||
|  | - [FetchSignInMethodsForEmailFailureInterface](../wyatt_authentication_bloc/FetchSignInMethodsForEmailFailureInterface-class.md) | ||||||
|  | - [ModelParsingFailureInterface](../wyatt_authentication_bloc/ModelParsingFailureInterface-class.md) | ||||||
|  | - [ReauthenticateFailureInterface](../wyatt_authentication_bloc/ReauthenticateFailureInterface-class.md) | ||||||
|  | - [RefreshFailureInterface](../wyatt_authentication_bloc/RefreshFailureInterface-class.md) | ||||||
|  | - [SendEmailVerificationFailureInterface](../wyatt_authentication_bloc/SendEmailVerificationFailureInterface-class.md) | ||||||
|  | - [SendPasswordResetEmailFailureInterface](../wyatt_authentication_bloc/SendPasswordResetEmailFailureInterface-class.md) | ||||||
|  | - [SendSignInLinkEmailFailureInterface](../wyatt_authentication_bloc/SendSignInLinkEmailFailureInterface-class.md) | ||||||
|  | - [SignInAnonymouslyFailureInterface](../wyatt_authentication_bloc/SignInAnonymouslyFailureInterface-class.md) | ||||||
|  | - [SignInWithAppleFailureInterface](../wyatt_authentication_bloc/SignInWithAppleFailureInterface-class.md) | ||||||
|  | - [SignInWithCredentialFailureInterface](../wyatt_authentication_bloc/SignInWithCredentialFailureInterface-class.md) | ||||||
|  | - [SignInWithEmailAndPasswordFailureInterface](../wyatt_authentication_bloc/SignInWithEmailAndPasswordFailureInterface-class.md) | ||||||
|  | - [SignInWithEmailLinkFailureInterface](../wyatt_authentication_bloc/SignInWithEmailLinkFailureInterface-class.md) | ||||||
|  | - [SignInWithFacebookFailureInterface](../wyatt_authentication_bloc/SignInWithFacebookFailureInterface-class.md) | ||||||
|  | - [SignInWithGoogleFailureInterface](../wyatt_authentication_bloc/SignInWithGoogleFailureInterface-class.md) | ||||||
|  | - [SignInWithTwitterFailureInterface](../wyatt_authentication_bloc/SignInWithTwitterFailureInterface-class.md) | ||||||
|  | - [SignOutFailureInterface](../wyatt_authentication_bloc/SignOutFailureInterface-class.md) | ||||||
|  | - [SignUpWithEmailAndPasswordFailureInterface](../wyatt_authentication_bloc/SignUpWithEmailAndPasswordFailureInterface-class.md) | ||||||
|  | - [UpdateEmailFailureInterface](../wyatt_authentication_bloc/UpdateEmailFailureInterface-class.md) | ||||||
|  | - [UpdatePasswordFailureInterface](../wyatt_authentication_bloc/UpdatePasswordFailureInterface-class.md) | ||||||
|  | - [VerifyPasswordResetCodeFailureInterface](../wyatt_authentication_bloc/VerifyPasswordResetCodeFailureInterface-class.md) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [AuthenticationFailureInterface](../wyatt_authentication_bloc/AuthenticationFailureInterface/AuthenticationFailureInterface.md) ([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code, [String](https://api.flutter.dev/flutter/dart-core/String-class.html) msg) | ||||||
|  | 
 | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  | [AuthenticationFailureInterface.fromCode](../wyatt_authentication_bloc/AuthenticationFailureInterface/AuthenticationFailureInterface.fromCode.md) ([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code) | ||||||
|  | 
 | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [code](../wyatt_authentication_bloc/AuthenticationFailureInterface/code.md) ↔ [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">read / write</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [message](../wyatt_authentication_bloc/AuthenticationFailureInterface/message.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">read-only</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [msg](../wyatt_authentication_bloc/AuthenticationFailureInterface/msg.md) ↔ [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | _<span class="feature">read / write</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](../wyatt_authentication_bloc/AuthenticationFailureInterface/toString.md)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,31 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationFailureInterface.fromCode constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | AuthenticationFailureInterface.fromCode([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | AuthenticationFailureInterface.fromCode(this.code) | ||||||
|  |     : msg = 'An unknown error occurred.'; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,30 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationFailureInterface constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | AuthenticationFailureInterface([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code, [String](https://api.flutter.dev/flutter/dart-core/String-class.html) msg) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | AuthenticationFailureInterface(this.code, this.msg); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # code property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) code | ||||||
|  |    | ||||||
|  | _<span class="feature">read / write</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | String code; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,40 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # message property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Annotations** | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) message | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | String get message => msg; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # msg property | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) msg | ||||||
|  |    | ||||||
|  | _<span class="feature">read / write</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | String msg; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,53 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # toString method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [String](https://api.flutter.dev/flutter/dart-core/String-class.html) toString | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>A string representation of this object.</p> | ||||||
|  | <p>Some classes have a default textual representation, | ||||||
|  | often paired with a static <code>parse</code> function (like <a href="https://api.flutter.dev/flutter/dart-core/int/parse.html">int.parse</a>). | ||||||
|  | These classes will provide the textual representation as | ||||||
|  | their string representation.</p> | ||||||
|  | <p>Other classes have no meaningful textual representation | ||||||
|  | that a program will care about. | ||||||
|  | Such classes will typically override <code>toString</code> to provide | ||||||
|  | useful information when inspecting the object, | ||||||
|  | mainly for debugging or logging.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | String toString() { | ||||||
|  |   if (message.isNotNullOrEmpty) { | ||||||
|  |     return '$runtimeType: $message'; | ||||||
|  |   } else { | ||||||
|  |     return '$runtimeType: An exception occured'; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,251 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationFirebaseDataSourceImpl<Data> class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Inheritance** | ||||||
|  | 
 | ||||||
|  | - [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) | ||||||
|  | - [AuthenticationRemoteDataSource](../wyatt_authentication_bloc/AuthenticationRemoteDataSource-class.md)<Data> | ||||||
|  | - AuthenticationFirebaseDataSourceImpl | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [AuthenticationFirebaseDataSourceImpl](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/AuthenticationFirebaseDataSourceImpl.md) ({[FirebaseAuth](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/FirebaseAuth-class.html)? firebaseAuth, [GoogleSignIn](https://pub.dev/documentation/google_sign_in/5.4.2/google_sign_in/GoogleSignIn-class.html)? googleSignIn}) | ||||||
|  | 
 | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [addSession](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/addSession.md)([SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> wrapper) void | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Add a new authentication event.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [confirmPasswordReset](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/confirmPasswordReset.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) code, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) newPassword}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Confirms the password reset with the provided <code>newPassword</code> and <code>code</code>.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [delete](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/delete.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Delete account.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [reauthenticate](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/reauthenticate.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Some security-sensitive actions—such as deleting an account, | ||||||
|  | setting a primary email address, and changing a password—require that | ||||||
|  | the user has recently signed in.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [refresh](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/refresh.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Refreshes the current user, if signed in.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [sendEmailVerification](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/sendEmailVerification.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Sends verification email to the account email.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [sendPasswordResetEmail](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/sendPasswordResetEmail.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Sends a password reset email to the provided <code>email</code>.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [sessionStream](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/sessionStream.md)() [Stream](https://api.flutter.dev/flutter/dart-async/Stream-class.html)<[SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data>> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Authentication state change event stream.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signInAnonymously](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/signInAnonymously.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Sign in anonymously.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signInWithEmailAndPassword](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/signInWithEmailAndPassword.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) password}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Signs in with the provided <code>email</code> and <code>password</code>.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signInWithGoogle](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/signInWithGoogle.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Starts the Sign In with Google Flow.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signOut](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/signOut.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Signs out the current user. | ||||||
|  | It also clears the cache and the associated data.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signUpWithEmailAndPassword](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/signUpWithEmailAndPassword.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) password}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Creates a new user with the provided <code>email</code> and <code>password</code>.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](https://api.flutter.dev/flutter/dart-core/Object/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [updateEmail](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/updateEmail.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Update or add <code>email</code>.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [updatePassword](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/updatePassword.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) password}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Update or add <code>password</code>.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [verifyPasswordResetCode](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl/verifyPasswordResetCode.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) code}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Verify password reset code.   | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,40 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationFirebaseDataSourceImpl<Data> constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | AuthenticationFirebaseDataSourceImpl<Data>({[FirebaseAuth](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/FirebaseAuth-class.html)? firebaseAuth, [GoogleSignIn](https://pub.dev/documentation/google_sign_in/5.4.2/google_sign_in/GoogleSignIn-class.html)? googleSignIn}) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | AuthenticationFirebaseDataSourceImpl({ | ||||||
|  |   FirebaseAuth? firebaseAuth, | ||||||
|  |   GoogleSignIn? googleSignIn, | ||||||
|  | })  : _firebaseAuth = firebaseAuth ?? FirebaseAuth.instance, | ||||||
|  |       _googleSignIn = googleSignIn ?? GoogleSignIn() { | ||||||
|  |   _latestCredentials = BehaviorSubject(); | ||||||
|  |   _sessionStream = BehaviorSubject(); | ||||||
|  | 
 | ||||||
|  |   // Check for account in memory (persistence) | ||||||
|  |   _checkForCachedAccount(); | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,40 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # addSession method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | void addSession | ||||||
|  | ([SessionWrapper](../../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> wrapper) | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Add a new authentication event.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | void addSession(SessionWrapper<Data> wrapper) { | ||||||
|  |   _sessionStream.add(wrapper); | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,53 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # confirmPasswordReset method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> confirmPasswordReset | ||||||
|  | ({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) code, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) newPassword}) | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Confirms the password reset with the provided <code>newPassword</code> and <code>code</code>.</p> | ||||||
|  | <p>Throws a ConfirmPasswordResetFailureInterface if an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<void> confirmPasswordReset({ | ||||||
|  |   required String code, | ||||||
|  |   required String newPassword, | ||||||
|  | }) async { | ||||||
|  |   try { | ||||||
|  |     await _firebaseAuth.confirmPasswordReset( | ||||||
|  |       code: code, | ||||||
|  |       newPassword: newPassword, | ||||||
|  |     ); | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw ConfirmPasswordResetFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw ConfirmPasswordResetFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,48 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # delete method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> delete | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Delete account.</p> | ||||||
|  | <p>Throws a DeleteAccountFailureInterface if | ||||||
|  | an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<void> delete() async { | ||||||
|  |   try { | ||||||
|  |     await _firebaseAuth.currentUser!.delete(); | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw DeleteAccountFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw DeleteAccountFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,61 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # reauthenticate method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../../wyatt_authentication_bloc/Account-class.md)> reauthenticate | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Some security-sensitive actions—such as deleting an account, | ||||||
|  | setting a primary email address, and changing a password—require that | ||||||
|  | the user has recently signed in.</p> | ||||||
|  | <p>Throws a ReauthenticateFailureInterface if | ||||||
|  | an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<Account> reauthenticate() async { | ||||||
|  |   final latestCreds = | ||||||
|  |       await _latestCredentials.stream.asBroadcastStream().last; | ||||||
|  |   try { | ||||||
|  |     if (latestCreds?.credential != null) { | ||||||
|  |       await _firebaseAuth.currentUser | ||||||
|  |           ?.reauthenticateWithCredential(latestCreds!.credential!); | ||||||
|  |     } else { | ||||||
|  |       throw Exception(); // Get caught just after. | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     final account = AccountModel.fromFirebaseUser(_firebaseAuth.currentUser); | ||||||
|  | 
 | ||||||
|  |     return account; | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw ReauthenticateFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw ReauthenticateFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,52 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # refresh method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../../wyatt_authentication_bloc/Account-class.md)> refresh | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Refreshes the current user, if signed in.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<Account> refresh() async { | ||||||
|  |   try { | ||||||
|  |     final jwt = await _firebaseAuth.currentUser?.getIdToken(true); | ||||||
|  |     final account = AccountModel.fromFirebaseUser( | ||||||
|  |       _firebaseAuth.currentUser, | ||||||
|  |       accessToken: jwt, | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     return account; | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw RefreshFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw RefreshFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,47 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # sendEmailVerification method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> sendEmailVerification | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Sends verification email to the account email.</p> | ||||||
|  | <p>Throws a SendEmailVerificationFailureInterface if an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<void> sendEmailVerification() async { | ||||||
|  |   try { | ||||||
|  |     await _firebaseAuth.currentUser!.sendEmailVerification(); | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw SendEmailVerificationFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw SendEmailVerificationFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,47 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # sendPasswordResetEmail method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> sendPasswordResetEmail | ||||||
|  | ({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email}) | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Sends a password reset email to the provided <code>email</code>.</p> | ||||||
|  | <p>Throws a SendPasswordResetEmailFailureInterface if an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<void> sendPasswordResetEmail({required String email}) async { | ||||||
|  |   try { | ||||||
|  |     await _firebaseAuth.sendPasswordResetEmail(email: email); | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw SendPasswordResetEmailFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw SendPasswordResetEmailFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,39 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # sessionStream method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Stream](https://api.flutter.dev/flutter/dart-async/Stream-class.html)<[SessionWrapper](../../wyatt_authentication_bloc/SessionWrapper-class.md)<Data>> sessionStream | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Authentication state change event stream.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Stream<SessionWrapper<Data>> sessionStream() => | ||||||
|  |     _sessionStream.stream.asBroadcastStream(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,54 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # signInAnonymously method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../../wyatt_authentication_bloc/Account-class.md)> signInAnonymously | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Sign in anonymously.</p> | ||||||
|  | <p>Throws a SignInAnonymouslyFailureInterface if an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<Account> signInAnonymously() async { | ||||||
|  |   try { | ||||||
|  |     final userCredential = await _firebaseAuth.signInAnonymously(); | ||||||
|  | 
 | ||||||
|  |     return _addToStream( | ||||||
|  |       userCredential, | ||||||
|  |       (account) => SignedInEvent( | ||||||
|  |         account: account, | ||||||
|  |       ), | ||||||
|  |     ); | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw SignInAnonymouslyFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw SignInAnonymouslyFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,61 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # signInWithEmailAndPassword method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../../wyatt_authentication_bloc/Account-class.md)> signInWithEmailAndPassword | ||||||
|  | ({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) password}) | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Signs in with the provided <code>email</code> and <code>password</code>.</p> | ||||||
|  | <p>Throws a SignInWithEmailAndPasswordFailureInterface if | ||||||
|  | an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<Account> signInWithEmailAndPassword({ | ||||||
|  |   required String email, | ||||||
|  |   required String password, | ||||||
|  | }) async { | ||||||
|  |   try { | ||||||
|  |     final userCredential = await _firebaseAuth.signInWithEmailAndPassword( | ||||||
|  |       email: email, | ||||||
|  |       password: password, | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     return _addToStream( | ||||||
|  |       userCredential, | ||||||
|  |       (account) => SignedInEvent( | ||||||
|  |         account: account, | ||||||
|  |       ), | ||||||
|  |     ); | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw SignInWithEmailAndPasswordFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw SignInWithEmailAndPasswordFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,68 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # signInWithGoogle method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../../wyatt_authentication_bloc/Account-class.md)> signInWithGoogle | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Starts the Sign In with Google Flow.</p> | ||||||
|  | <p>Throws a SignInWithGoogleFailureInterface if an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<Account> signInWithGoogle() async { | ||||||
|  |   try { | ||||||
|  |     // Trigger the authentication flow | ||||||
|  |     final GoogleSignInAccount? googleUser = await _googleSignIn.signIn(); | ||||||
|  | 
 | ||||||
|  |     // Obtain the auth details from the request | ||||||
|  |     final GoogleSignInAuthentication? googleAuth = | ||||||
|  |         await googleUser?.authentication; | ||||||
|  | 
 | ||||||
|  |     // Create a new credential | ||||||
|  |     final credential = GoogleAuthProvider.credential( | ||||||
|  |       accessToken: googleAuth?.accessToken, | ||||||
|  |       idToken: googleAuth?.idToken, | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     final userCredential = | ||||||
|  |         await _firebaseAuth.signInWithCredential(credential); | ||||||
|  | 
 | ||||||
|  |     return _addToStream( | ||||||
|  |       userCredential, | ||||||
|  |       (account) => SignedInEvent( | ||||||
|  |         account: account, | ||||||
|  |       ), | ||||||
|  |     ); | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw SignInWithGoogleFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw SignInWithGoogleFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,46 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # signOut method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> signOut | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Signs out the current user. | ||||||
|  | It also clears the cache and the associated data.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<void> signOut() async { | ||||||
|  |   try { | ||||||
|  |     _latestCredentials.add(null); | ||||||
|  |     await _firebaseAuth.signOut(); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw SignOutFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,62 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # signUpWithEmailAndPassword method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../../wyatt_authentication_bloc/Account-class.md)> signUpWithEmailAndPassword | ||||||
|  | ({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) password}) | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Creates a new user with the provided <code>email</code> and <code>password</code>.</p> | ||||||
|  | <p>Returns the newly created user's unique identifier.</p> | ||||||
|  | <p>Throws a SignUpWithEmailAndPasswordFailureInterface if | ||||||
|  | an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<Account> signUpWithEmailAndPassword({ | ||||||
|  |   required String email, | ||||||
|  |   required String password, | ||||||
|  | }) async { | ||||||
|  |   try { | ||||||
|  |     final userCredential = await _firebaseAuth.createUserWithEmailAndPassword( | ||||||
|  |       email: email, | ||||||
|  |       password: password, | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     return _addToStream( | ||||||
|  |       userCredential, | ||||||
|  |       (account) => SignedUpEvent( | ||||||
|  |         account: account, | ||||||
|  |       ), | ||||||
|  |     ); | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw SignUpWithEmailAndPasswordFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw SignUpWithEmailAndPasswordFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,55 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # updateEmail method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../../wyatt_authentication_bloc/Account-class.md)> updateEmail | ||||||
|  | ({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email}) | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Update or add <code>email</code>.</p> | ||||||
|  | <p>Throws a UpdateEmailFailureInterface if | ||||||
|  | an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<Account> updateEmail({required String email}) async { | ||||||
|  |   try { | ||||||
|  |     await _firebaseAuth.currentUser!.updateEmail(email); | ||||||
|  |     final jwt = await _firebaseAuth.currentUser!.getIdToken(true); | ||||||
|  |     final account = AccountModel.fromFirebaseUser( | ||||||
|  |       _firebaseAuth.currentUser, | ||||||
|  |       accessToken: jwt, | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     return account; | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw UpdateEmailFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw UpdateEmailFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,55 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # updatePassword method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../../wyatt_authentication_bloc/Account-class.md)> updatePassword | ||||||
|  | ({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) password}) | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Update or add <code>password</code>.</p> | ||||||
|  | <p>Throws a UpdatePasswordFailureInterface if | ||||||
|  | an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<Account> updatePassword({required String password}) async { | ||||||
|  |   try { | ||||||
|  |     await _firebaseAuth.currentUser!.updatePassword(password); | ||||||
|  |     final jwt = await _firebaseAuth.currentUser!.getIdToken(true); | ||||||
|  |     final account = AccountModel.fromFirebaseUser( | ||||||
|  |       _firebaseAuth.currentUser, | ||||||
|  |       accessToken: jwt, | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     return account; | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw UpdatePasswordFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw UpdatePasswordFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,48 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # verifyPasswordResetCode method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html) | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)> verifyPasswordResetCode | ||||||
|  | ({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) code}) | ||||||
|  | 
 | ||||||
|  | _<span class="feature">override</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Verify password reset code.</p> | ||||||
|  | <p>Throws a VerifyPasswordResetCodeFailureInterface if an exception occurs.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | @override | ||||||
|  | Future<bool> verifyPasswordResetCode({required String code}) async { | ||||||
|  |   try { | ||||||
|  |     final email = await _firebaseAuth.verifyPasswordResetCode(code); | ||||||
|  |     return email.isNotNullOrEmpty; | ||||||
|  |   } on FirebaseAuthException catch (e) { | ||||||
|  |     throw VerifyPasswordResetCodeFailureFirebase.fromCode(e.code); | ||||||
|  |   } catch (_) { | ||||||
|  |     throw VerifyPasswordResetCodeFailureFirebase(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,247 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationRemoteDataSource<Data> class | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | <p>Is responsible for abstracting the provenance of the data.</p> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | **Implementers** | ||||||
|  | 
 | ||||||
|  | - [AuthenticationFirebaseDataSourceImpl](../wyatt_authentication_bloc/AuthenticationFirebaseDataSourceImpl-class.md) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Constructors | ||||||
|  | 
 | ||||||
|  | [AuthenticationRemoteDataSource](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/AuthenticationRemoteDataSource.md) () | ||||||
|  | 
 | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Properties | ||||||
|  | 
 | ||||||
|  | ##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The hash code for this object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A representation of the runtime type of the object.   | ||||||
|  | _<span class="feature">read-only</span><span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Methods | ||||||
|  | 
 | ||||||
|  | ##### [addSession](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/addSession.md)([SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> wrapper) void | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [confirmPasswordReset](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/confirmPasswordReset.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) code, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) newPassword}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [delete](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/delete.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Invoked when a non-existent method or property is accessed.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [reauthenticate](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/reauthenticate.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [refresh](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/refresh.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [sendEmailVerification](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/sendEmailVerification.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [sendPasswordResetEmail](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/sendPasswordResetEmail.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [sessionStream](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/sessionStream.md)() [Stream](https://api.flutter.dev/flutter/dart-async/Stream-class.html)<[SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data>> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signInAnonymously](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/signInAnonymously.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signInWithEmailAndPassword](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/signInWithEmailAndPassword.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) password}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signInWithGoogle](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/signInWithGoogle.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signOut](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/signOut.md)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [signUpWithEmailAndPassword](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/signUpWithEmailAndPassword.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) password}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [toString](https://api.flutter.dev/flutter/dart-core/Object/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | A string representation of this object.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [updateEmail](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/updateEmail.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) email}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [updatePassword](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/updatePassword.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) password}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../wyatt_authentication_bloc/Account-class.md)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ##### [verifyPasswordResetCode](../wyatt_authentication_bloc/AuthenticationRemoteDataSource/verifyPasswordResetCode.md)({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) code}) [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Operators | ||||||
|  | 
 | ||||||
|  | ##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The equality operator.   | ||||||
|  | _<span class="feature">inherited</span>_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,25 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # AuthenticationRemoteDataSource<Data> constructor | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | AuthenticationRemoteDataSource<Data>() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # addSession method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void addSession | ||||||
|  | ([SessionWrapper](../../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> wrapper) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | void addSession(SessionWrapper<Data> wrapper); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,38 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # confirmPasswordReset method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> confirmPasswordReset | ||||||
|  | ({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) code, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) newPassword}) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | Future<void> confirmPasswordReset({ | ||||||
|  |   required String code, | ||||||
|  |   required String newPassword, | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # delete method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void> delete | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | Future<void> delete(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # reauthenticate method | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     *[<Null safety>](https://dart.dev/null-safety)* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<[Account](../../wyatt_authentication_bloc/Account-class.md)> reauthenticate | ||||||
|  | () | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Implementation | ||||||
|  | 
 | ||||||
|  | ```dart | ||||||
|  | Future<Account> reauthenticate(); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user