Authentication package for Flutter based on firebase_auth. This package provides advanced functionality for managing user authentication in Android, iOS, and web applications.
Integrated with firebase_auth, one_day_auth package allows easy configuration of various authentication methods, including email and password authentication, phone number authentication, as well as social media account authentication such as Google, Apple, Facebook, Twitter, GitHub and sign in anonymously.
The package automatically handles all aspects of authentication, allowing developers to focus on implementing the application's functionality without spending time on authentication details.
Use our Flutter library to quickly and efficiently implement a secure and advanced authentication mechanism in your application!
Git
one_day_auth:
git:
url: # git https url
ref: # branch, if neededLocal
one_day_auth:
path: # local pathBefore using the package, make sure that the basic settings are configured.
The library contains such builders: EmailPasswordBuilder, PhoneBuilder, PhoneCodeBuilder, PhoneWithCodeBuilder, OAuthBuilder, AuthAnonymouslyBuilder, SignOutBuilder, EmailVerificationBuilder, DeleteUserBuilder, ReAuthPasswordBuilder, ReAuthPhoneCodeBuilder, ForgottenPasswordBuilder, ChangePasswordBuilder. These builders are part of the main views.
The view contains a listener, a builder, and basic parameters required for functionality.
EmailPasswordView- sign in / sign up with password (email/password fields)PhoneView- sign in / sign up with phone (phone field)PhoneCodeViewsign in / sign up with phone (code field)PhoneWithCodeViewsign in / sign up with phone (phone/code fields)ForgottenPasswordView- forgotten password functionalityEmailVerificationView- email verification functionalitySignOutView- sign out functionalityDeleteUserView- delete user functionalityChangePasswordView- change password functionalityReAuthPasswordView- password re-authenticationReAuthPhoneCodeView- phone re-authenticationAppleSignInView- sign in with AppleFacebookSignInView- sign in with FacebookGitHubSignInView- sign in with GitHubGoogleSignInView- sign in with GoogleTwitterSignInView- sign in with TwitterAuthAnonymouslyView- sign in anonymously
States: EmailPasswordInitial, EmailPasswordLoading, EmailPasswordSignedUp, EmailPasswordSignedIn, OneDayAuthException
EmailPasswordView(
initialAuthAction: AuthActions.signIn, // initial auth action signIn/signUp
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required AuthActions action,
required OneDayAuthState state,
required bool isLoading,
required Object? exception,
required VoidCallback changeAction,
required EmailPasswordCallback onSubmit,
}) {
// UI
},
)States: PhoneInitial, PhoneLoading, PhoneCodeSent, OneDayAuthException
PhoneView(
initialAuthAction: AuthActions.signIn, // initial auth action signIn/signUp
listener: (OneDayAuthState state, AuthActions action) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required AuthActions action,
required bool isLoading,
required Object? exception,
required VoidCallback changeAction,
required Future<void> Function(String phoneNumber) sendCode,
}) {
// UI
},
)States: PhoneCodeInitial, PhoneCodeLoading, PhoneCodeException, PhoneCodeCompleted, OneDayAuthException
PhoneCodeView(
initialAuthAction: AuthActions.signIn, // initial auth action signIn/signUp
codeSentResult: codeSentResult,
listener: (OneDayAuthState state, AuthActions action) {
// listener
},
builder: ({
required BuildContext context,
required AuthActions action,
required OneDayAuthState state,
required CodeSentResult codeSentResult,
required bool isLoading,
required Object? exception,
required FutureVoidCallback sendCode,
required ConfirmCodeCallback confirm,
}) {
// UI
},
)States: PhoneCodeInitial, PhoneLoading, PhoneCodeSent, PhoneCodeLoading, PhoneCodeException, PhoneCodeCompleted, OneDayAuthException
PhoneWithCodeView(
initialAuthAction: AuthActions.signIn, // initial auth action signIn/signUp
listener: (OneDayAuthState state, AuthActions action) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required AuthActions action,
required CodeSentResult? codeSentResult,
required bool phoneAwaiting,
required bool codeAwaiting,
required bool isCodeSent,
required VoidCallback changeAction,
required VoidCallback setInitialState,
required Future<void> Function(String phoneNumber) sendCode,
required ConfirmPhoneWithCodeCallback confirm,
required Object? exception,
}) {
// UI
},
)States: ForgottenPasswordInitial, ForgottenPasswordLoading, ForgottenPasswordMailSent, OneDayAuthException
ForgottenPasswordView(
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required bool isMailSent,
required Future<void> Function(String email) sendMail,
required Object? exception,
}) {
// UI
},
)States: EmailVerification, EmailVerified, EmailVerificationUnavailable, EmailVerificationLoading, EmailVerificationAwaiting, EmailVerificationCheckAwaiting, OneDayAuthException
EmailVerificationView(
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required FutureVoidCallback sendMail,
required FutureVoidCallback checkVerification,
required Object? exception,
}) {
// UI
},
)States: SignOutInitial, SignOutLoading, OneDayAuthException
SignOutView(
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required FutureVoidCallback signOut,
required Object? exception,
}) {
// UI
},
)States: DeleteUserInitial, DeleteUserReAuthAwaiting, DeleteUserLoading, OneDayAuthException
DeleteUserView(
googleWebClientId: webClientId, // if required for functionality
facebookAppId: facebookClientId, // if required for functionality
preDeleteAction: (User? user) async {
// before deletion action, if required for functionality
},
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required VoidCallback setInitial,
required VoidCallback setAwaiting,
required bool isLoading,
required FutureVoidCallback deleteUser,
required Object? exception,
}) {
// UI
},
)States: ChangePasswordInitial, ChangePasswordInvalidCurrentPassword, ChangePasswordLoading, ChangePasswordCompleted, OneDayAuthException
ChangePasswordView(
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required ChangePasswordCallback changePassword,
required VoidCallback setInitialState,
required Object? exception,
}) {
// UI
},
)States: ReAuthPasswordInitial, ReAuthPasswordLoading, ReAuthPasswordCompleted, OneDayAuthException
ReAuthPasswordView(
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required Future<void> Function(String password) reAuth,
required Object? exception,
}) {
// UI
},
)States: ReAuthPhoneCodeInitial, ReAuthPhoneCodeWebContextCancelled, ReAuthPhoneCodeAwaiting, ReAuthPhoneCodeLoading, ReAuthPhoneCodeCompleted, ReAuthPhoneCodeException, OneDayAuthException
ReAuthPhoneCodeView(
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required bool codeAwaiting,
required VoidCallback setInitialState,
required Future<void> Function(String code) reAuth,
required Object? exception,
}) {
// UI
},
)States: OAuthInitial, OAuthLoading, OAuthAuthorized, OneDayAuthException
AppleSignInView(
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required SignInCallback signIn,
required Object? exception,
}) {
// UI
},
)States: OAuthInitial, OAuthLoading, OAuthAuthorized, OneDayAuthException
FacebookSignInView(
appId: facebookClientId,
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required SignInCallback signIn,
required Object? exception,
}) {
// UI
},
)States: OAuthInitial, OAuthLoading, OAuthAuthorized, OneDayAuthException
GitHubSignInView(
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required SignInCallback signIn,
required Object? exception,
}) {
// UI
},
)States: OAuthInitial, OAuthLoading, OAuthAuthorized, OneDayAuthException
GoogleSignInView(
webClientId: webClientId,
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required SignInCallback signIn,
required Object? exception,
}) {
// UI
},
)States: OAuthInitial, OAuthLoading, OAuthAuthorized, OneDayAuthException
TwitterSignInView(
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required SignInCallback signIn,
required Object? exception,
}) {
// UI
},
)States: AuthAnonymouslyInitial, AuthAnonymouslyLoading, AuthAnonymouslyAuthorized, OneDayAuthException
AuthAnonymouslyView(
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required SignInCallback signIn,
required Object? exception,
}) {
// UI
},
)The package contains default dialogs and buttons for authentication.
AuthDialogs contains:
showDefaultActionDialogshowReAuthPasswordDialogshowReAuthPhoneCodeDialogshowChangePasswordDialog
Example:
final bool res = await AuthDialogs.showDefaultActionDialog(
context: context,
title: AuthLocalizations.labelsOf(context).deleteAccountQ,
subtitle: AuthLocalizations.labelsOf(context).deleteAccountDescription,
);Default sign in buttons:
AppleSignInButtonFacebookSignInButtonGitHubSignInButtonGoogleSignInButtonTwitterXSignInButton
Example:
GoogleSignInView(
webClientId: webClientId,
listener: (OneDayAuthState state) {
// listener
},
builder: ({
required BuildContext context,
required OneDayAuthState state,
required bool isLoading,
required SignInCallback signIn,
required Object? exception,
}) {
return GoogleSignInButton(
onPressed: signIn,
isLoading: isLoading,
);
},
)Example of how various actions can be handled:
listener: (OneDayAuthState state) {
if (state is OAuthAuthorized) {
_authorizedRoute();
} else if (state is OneDayAuthException) {
AppSnackBar.show(
context: context,
subtitle: AuthExceptions.exceptionMessage(
context: context,
exception: state.exception,
),
);
}
}The package contains default utilities AuthUtils, ServiceRegExp, ServiceStringNullableExtension, ListUserInfoExtension, AuthLocalizations, for exceptions handling/localization AuthExceptions. There is also the option to utilize FirebaseAuthService.instance.