Firebase Authentication helps you easily add user sign-in to your app. It keeps user info safe and lets users log in quickly.
0
0
Firebase Authentication in Flutter
Introduction
When you want users to create accounts and log in to your app.
When you need to protect parts of your app so only signed-in users can access them.
When you want to let users sign in with email/password or social accounts like Google.
When you want to manage user sessions without building your own backend.
When you want to quickly add secure authentication without much code.
Syntax
Flutter
final FirebaseAuth auth = FirebaseAuth.instance; // Sign up with email and password UserCredential userCredential = await auth.createUserWithEmailAndPassword( email: 'email@example.com', password: 'password123', ); // Sign in with email and password UserCredential userCredential2 = await auth.signInWithEmailAndPassword( email: 'email@example.com', password: 'password123', ); // Sign out await auth.signOut();
Use FirebaseAuth.instance to access authentication methods.
All sign-in and sign-up methods return a UserCredential object with user info.
Examples
This creates a new user account with email and password.
Flutter
final auth = FirebaseAuth.instance; // Sign up new user await auth.createUserWithEmailAndPassword( email: 'user@example.com', password: 'mypassword', );
This signs in a user who already has an account.
Flutter
final auth = FirebaseAuth.instance; // Sign in existing user await auth.signInWithEmailAndPassword( email: 'user@example.com', password: 'mypassword', );
This logs out the current user from the app.
Flutter
final auth = FirebaseAuth.instance; // Sign out current user await auth.signOut();
Sample App
This app lets users sign up, sign in, and sign out using Firebase Authentication with email and password. It shows messages for success or failure.
Flutter
import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_auth/firebase_auth.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: AuthExample(), ); } } class AuthExample extends StatefulWidget { @override _AuthExampleState createState() => _AuthExampleState(); } class _AuthExampleState extends State<AuthExample> { final FirebaseAuth _auth = FirebaseAuth.instance; final TextEditingController _emailController = TextEditingController(); final TextEditingController _passwordController = TextEditingController(); String _message = ''; Future<void> _signUp() async { try { await _auth.createUserWithEmailAndPassword( email: _emailController.text.trim(), password: _passwordController.text.trim(), ); setState(() { _message = 'Sign up successful!'; }); } catch (e) { setState(() { _message = 'Sign up failed: $e'; }); } } Future<void> _signIn() async { try { await _auth.signInWithEmailAndPassword( email: _emailController.text.trim(), password: _passwordController.text.trim(), ); setState(() { _message = 'Sign in successful!'; }); } catch (e) { setState(() { _message = 'Sign in failed: $e'; }); } } Future<void> _signOut() async { await _auth.signOut(); setState(() { _message = 'Signed out'; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Firebase Auth Example')), body: Padding( padding: EdgeInsets.all(16), child: Column( children: [ TextField( controller: _emailController, decoration: InputDecoration(labelText: 'Email'), keyboardType: TextInputType.emailAddress, ), TextField( controller: _passwordController, decoration: InputDecoration(labelText: 'Password'), obscureText: true, ), SizedBox(height: 20), Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ ElevatedButton(onPressed: _signUp, child: Text('Sign Up')), ElevatedButton(onPressed: _signIn, child: Text('Sign In')), ElevatedButton(onPressed: _signOut, child: Text('Sign Out')), ], ), SizedBox(height: 20), Text(_message, style: TextStyle(color: Colors.blue)), ], ), ), ); } }
OutputSuccess
Important Notes
Always initialize Firebase before using authentication.
Use try-catch to handle errors like wrong password or user not found.
Keep user passwords safe by never storing them yourself; Firebase handles this securely.
Summary
Firebase Authentication makes adding user login easy and secure.
Use createUserWithEmailAndPassword to sign up and signInWithEmailAndPassword to log in.
Always handle errors and show clear messages to users.