Flutter Firebase Integration: Complete Guide to Authentication & Firestore
Learn how to integrate Firebase with Flutter. Step-by-step guide for Firebase setup, authentication, Firestore database, and best practices for production apps.
Introduction
Most modern mobile applications require backend services such as authentication, database storage, push notifications, and analytics.
Firebase is one of the most popular backend solutions used with Flutter because it is easy to integrate and highly scalable.
In this complete guide, we will deeply explore:
- What is Firebase?
- Setting up Firebase in Flutter
- Firebase Authentication
- Cloud Firestore database
- Real-world example
- Best practices
What Is Firebase?
Firebase is a Backend-as-a-Service platform provided by Google. It provides ready-to-use backend tools including:
- Authentication
- Cloud Firestore database
- Realtime Database
- Cloud Functions
- Push Notifications
- Analytics
Step 1: Create Firebase Project
Go to Firebase Console and create a new project. Add your Android or iOS app inside the project.
Step 2: Add Firebase to Flutter
Add required dependencies in pubspec.yaml:
dependencies: firebase_core: latest_version firebase_auth: latest_version cloud_firestore: latest_version
Then run:
flutter pub get
Step 3: Initialize Firebase
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
This initializes Firebase before running the app.
Firebase Authentication (Email & Password)
Register User
FutureregisterUser(String email, String password) async { await FirebaseAuth.instance.createUserWithEmailAndPassword( email: email, password: password, ); }
Login User
FutureloginUser(String email, String password) async { await FirebaseAuth.instance.signInWithEmailAndPassword( email: email, password: password, ); }
Logout User
FuturelogoutUser() async { await FirebaseAuth.instance.signOut(); }
Listening to Auth State Changes
StreamBuilder(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return HomeScreen();
} else {
return LoginScreen();
}
},
)
This automatically updates UI when user logs in or logs out.
Cloud Firestore (NoSQL Database)
Firestore is a cloud-based NoSQL database. Data is stored in collections and documents.
Adding Data
FutureaddUserData(String name) async { await FirebaseFirestore.instance.collection("users").add({ "name": name, "createdAt": Timestamp.now(), }); }
Reading Data
StreamBuilder(
stream: FirebaseFirestore.instance
.collection("users")
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
final docs = snapshot.data!.docs;
return ListView.builder(
itemCount: docs.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(docs[index]['name']),
);
},
);
},
)
Updating Data
FirebaseFirestore.instance
.collection("users")
.doc(documentId)
.update({"name": "Updated Name"});
Deleting Data
FirebaseFirestore.instance
.collection("users")
.doc(documentId)
.delete();
Firestore Data Structure Example
users (collection) ├── userId1 (document) │ ├── name: Ravi │ ├── email: example@gmail.com
Security Rules
Always configure Firestore security rules properly. Do not leave production apps in test mode.
Common Beginner Mistakes
- Forgetting Firebase.initializeApp()
- Not setting proper security rules
- Calling Firestore inside build()
- Ignoring error handling
Best Practices
- Separate Firebase logic into service files
- Handle exceptions using try-catch
- Use proper state management
- Protect sensitive data with security rules
Real-World Architecture Tip
In large apps:
- Use repository pattern
- Abstract Firebase inside data layer
- Do not directly call Firebase inside UI
Conclusion
Firebase integration allows you to build powerful backend-enabled Flutter apps without managing servers.
By mastering authentication and Firestore, you can create production-ready applications with real-time data.
Share
What's Your Reaction?
Like
0
Dislike
0
Love
0
Funny
0
Angry
0
Sad
0
Wow
0