easy_firebase_auth

Add Firebase authentication to your Flutter app with a few lines of code.

This package manages the authentication state of the app. And toggles between the different screens.

  • Splash screen
  • Introduction screen
  • Login screen
  • Home screen

You can customize every widget

This package uses provider package

Features

  • Set Splash Screen duration
  • Prebuilt Widgets
  • Fully customizable
  • Multi-language (Prebuilt for english and spanish)
  • Toggle between screens automatically

Supported Firebase authentication methods

  • Sign in with email
  • Sign in with Google
  • Sign in with Apple
  • Sign in Anonymous

Basic usage

  1. Add firebase to your flutter app

  2. Your MaterialApp must be a child of 'ChangeNotifierProvider'

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<AuthState>(
      child: MaterialApp(
        home: ParentPage(),
      ),
      create: (_) => AuthState(),
    );
  }
}
  1. The AuthManagerWidget manages the screen shown in each of the authentication states
class ParentPage extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return AuthManagerWidget(
      splashScreen: MySplashScreen(), //optional
      introductionScreen: MyIntroductionScreen(), //optional, user not logged
      loginScreen: MyLoginScreen(), // user not logged, the introduction has been completed
      mainScreen: MyMainScreen(), // user logged (email, google, apple or anonymous)
    );
  }
}

Customize your strings

You can set here your privacy url and terms of use in markdown format

AuthStrings authStrings = AuthStrings.spanish(
      privacyMarkdown: "Al continuar aceptas la [polĂ­tica de privacidad](https://myPrivacyUrl.com) "
          "y las [condiciones de servicio](https://myTermsUrl.com)."
    );

Customize LoginScreen

Screenshot

LoginScreen(
        authStrings: authStrings,
        backgroundColor: Colors.purple,
        expandedWidget: Center(
          child: Container(
            height: 200,
            width: 300,
            color: Colors.red,
          ),
        ),
      )

Screenshot

LoginScreen(
        logInAnonymous: false,
        logInWithEmail: true,
        logInWithGoogle: true,
        logInWithApple: true,
        authStrings: authStrings,
        backgroundWidget: Image.network(imageUrl,
        fit: BoxFit.cover,),
      )

Customize EmailLoginScreen

Screenshot

LoginScreen(
        ...
        emailLoginBuilder: (BuildContext context){
                  return EmailLoginScreen(
                    authStrings: authStrings,
                    appBar: AppBar(
                      title: Text("My Login"),
                    ),
                    mainColor: Colors.blue,
                  );
                },
      )

Other actions

Retrieve authState from anywhere in your code

AuthState authState = Provider.of(context);

Set introduction as completed

authState.setIntroductionCompleted(true);

Logout

authState.signOut();

Change user name

authState.changeName('My name');

Change user photo url

authState.changePhotoUrl('https://example.com/myPicture.png');

Send email to reset password

authState.resetPassword('userEmail@examle.com');

Get user data

var uid = authState.uid;
var name = authState.name;
var email = authState.email;
var photoUrl = authState.photoUrl;
var isAnonymous = authState.isAnonymous;

Libraries

apple_sign_in_button
auth_screen
auth_state
auth_strings
easy_firebase_auth
email_login_screen
email_sign_in_button
google_sign_in_button
login_screen
strechable_button