Membuat Aplikasi Flutter dengan Firebase untuk Autentikasi Email dan Password

Galih Setiawan Nurohim
3 min readJun 29, 2024

--

Dalam artikel ini, kita akan membahas langkah-langkah membuat aplikasi Flutter yang menggunakan Firebase untuk autentikasi email dan password. Firebase menyediakan layanan backend yang mudah digunakan, termasuk autentikasi pengguna.

Langkah-langkah Implementasi

1. Persiapan Proyek Firebase

1. Buat Proyek Firebase:

— Buka [Firebase Console](https://console.firebase.google.com/).
— Klik “Add project” dan ikuti langkah-langkah untuk membuat proyek baru.

2. Tambahkan Aplikasi Android ke Firebase:

— Di Firebase Console, klik ikon Android untuk menambahkan aplikasi Android.
— Daftarkan aplikasi Anda dengan nama paket (misalnya, `com.example.yourapp`).
— Unduh file `google-services.json` dan letakkan di direktori `android/app` proyek Flutter Anda.

3. Tambahkan Aplikasi iOS ke Firebase (Opsional):

— Di Firebase Console, klik ikon iOS untuk menambahkan aplikasi iOS.
— Ikuti instruksi untuk mengunduh file `GoogleService-Info.plist` dan tambahkan ke proyek Xcode Anda.

4. Instal Firebase CLI:

Pastikan Anda telah menginstal Node.js, kemudian instal Firebase CLI:

npm install -g firebase-tools

5. Login ke Firebase:

Login ke akun Firebase Anda menggunakan Firebase CLI:

firebase login

6. Instal FlutterFire CLI:

Instal FlutterFire CLI untuk mempermudah konfigurasi Firebase di proyek Flutter Anda:

dart pub global activate flutterfire_cli

Tambahkan Dart SDK ke PATH sistem Anda jika diperlukan.

6. Inisialisasi Firebase di Proyek Flutter:

Jalankan perintah berikut di direktori proyek Flutter Anda untuk mengonfigurasi Firebase:

flutterfire configure

2. Konfigurasi Proyek Flutter

1. Tambahkan Dependency Firebase:

Buka file `pubspec.yaml` dan tambahkan dependency berikut:

dependencies:
flutter:
sdk: flutter
firebase_core: ^2.2.0
firebase_auth: ^4.2.0

Kemudian, jalankan perintah berikut untuk menginstal dependency:

flutter pub get

2. Inisialisasi Firebase di Flutter:

Pastikan Anda menginisialisasi Firebase di file `main.dart`.

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
import 'login_page.dart';
import 'register_page.dart';

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Firebase Auth',
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: '/',
routes: {
'/': (context) => LoginPage(),
'/register': (context) => RegisterPage(),
},
);
}
}

3. Membuat Halaman Login

Buat file `login_page.dart` di direktori `lib` dan tambahkan kode berikut:

import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';

class LoginPage extends StatefulWidget {
@override
_LoginPageState createState() => _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {
final FirebaseAuth _auth = FirebaseAuth.instance;
final TextEditingController _emailController = TextEditingController();
final TextEditingController _passwordController = TextEditingController();

Future<void> _login() async {
try {
UserCredential userCredential = await _auth.signInWithEmailAndPassword(
email: _emailController.text,
password: _passwordController.text,
);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Berhasil login!')),
);
} on FirebaseAuthException catch (e) {
String message;
if (e.code == 'user-not-found') {
message = 'Pengguna tidak ditemukan.';
} else if (e.code == 'wrong-password') {
message = 'Password salah.';
} else {
message = 'Gagal login: $e';
}
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(message)),
);
}
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Login'),
),
body: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
controller: _emailController,
decoration: InputDecoration(labelText: 'Email'),
),
TextField(
controller: _passwordController,
decoration: InputDecoration(labelText: 'Password'),
obscureText: true,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _login,
child: Text('Login'),
),
TextButton(
onPressed: () {
Navigator.pushNamed(context, '/register');
},
child: Text('Belum punya akun? Daftar'),
),
],
),
),
);
}
}

4. Membuat Halaman Register

Buat file `register_page.dart` di direktori `lib` dan tambahkan kode berikut:

import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';

class RegisterPage extends StatefulWidget {
@override
_RegisterPageState createState() => _RegisterPageState();
}

class _RegisterPageState extends State<RegisterPage> {
final FirebaseAuth _auth = FirebaseAuth.instance;
final TextEditingController _emailController = TextEditingController();
final TextEditingController _passwordController = TextEditingController();

Future<void> _register() async {
try {
UserCredential userCredential = await _auth.createUserWithEmailAndPassword(
email: _emailController.text,
password: _passwordController.text,
);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Berhasil mendaftar!')),
);
} on FirebaseAuthException catch (e) {
String message;
if (e.code == 'weak-password') {
message = 'Password terlalu lemah.';
} else if (e.code == 'email-already-in-use') {
message = 'Akun sudah ada untuk email tersebut.';
} else if (e.code == 'invalid-email') {
message = 'Alamat email tidak valid.';
} else {
message = 'Gagal mendaftar: $e';
}
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(message)),
);
}
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Register'),
),
body: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
controller: _emailController,
decoration: InputDecoration(labelText: 'Email'),
),
TextField(
controller: _passwordController,
decoration: InputDecoration(labelText: 'Password'),
obscureText: true,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _register,
child: Text('Daftar'),
),
TextButton(
onPressed: () {
Navigator.pop(context);
},
child: Text('Sudah punya akun? Login'),
),
],
),
),
);
}
}

5. Jalankan Aplikasi

Jalankan aplikasi Flutter Anda untuk menguji fungsionalitas login dan registrasi email/password:

flutter pub get

Kesimpulan

Dengan mengikuti langkah-langkah di atas, Anda dapat membuat aplikasi Flutter yang menggunakan Firebase untuk autentikasi email dan password. Pastikan semua konfigurasi di Firebase Console telah dilakukan dengan benar dan aplikasi Anda akan berfungsi tanpa masalah terkait cross-origin redirects.

Dengan demikian, Anda telah berhasil membuat aplikasi Flutter dengan Firebase untuk autentikasi email dan password. Selamat mencoba!

— -

--

--

Galih Setiawan Nurohim
Galih Setiawan Nurohim

No responses yet