An AuthProvider
interface with FirebaseAuth implementation
Usage
final AuthProvider authProvider = FirebaseAuthProvider.fromInstance();
authProvider.signOut();
final signInResult = authProvider.emailPasswordSignIn(
LoginCredentials("some@email.com", "secretPassword"));
final AuthUser? currentUser = authProvider.currentAuthUser;
if (currentUser != null) {
print("""
Currently logged in as: ${currentUser.displayName},
${currentUser.email},
${currentUser.id}""");
} else {
print("Not logged in");
}
authProvider.authStateChanged.listen((authUser) {
print("Auth user changed");
print("Is logged in: ${authUser != null}");
if (authUser != null) {
print(
"Currently logged in as: ${authUser.displayName}, ${authUser.email}, ${authUser.id}");
}
});
Use the AuthStateWrapper
to handle listening to the current auth state and display the correct
page accordingly.
final AuthStateWrapper authStateWrapper = AuthStateWrapper(
authProvider: authProvider,
signedIn: (context) => HomePage(),
notSignedIn: (context) => LoginPage(),
loading: (context) => const CircularProgressIndicator(),
error: (context, error) => Text("Error occurred: $error"));