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"));