Pertemuan 12 - PPB
Penerapan MVVM pada Halaman Login
Dalam artikel kali ini, saya ingin berbagi hasil eksplorasi saya dalam membuat aplikasi login Android menggunakan MVVM Architecture dan Room Database. Aplikasi ini saya beri nama Flo Login, sebuah aplikasi autentikasi user sederhana.
Langkah awal dimulai dengan membuat proyek baru menggunakan template Empty Activity di Android Studio. Saya membuat form login yang sederhana dengan input username dan password, tombol submit, dan pesan error/sukses. Berikut hasilnya:
Kemudian, saya melakukan eksplorasi dengan memodifikasi dan mengembangkan kode tersebut secara bertahap. Saya menerapkan MVVM Architecture dengan memisahkan layer: UI (Jetpack Compose), ViewModel (state management), Repository (data abstraction), dan Room Database (persistent storage).
Adapun fitur-fitur yang saya implementasikan adalah sebagai berikut:
- Login dengan validasi username dan password terhadap database
- Register user baru dengan validasi username unik (minimum 3 karakter) dan password (minimum 5 karakter)
- Konfirmasi password harus cocok sebelum mendaftar
- Welcome screen yang menampilkan username setelah login berhasil
- Fungsi logout untuk kembali ke login screen
- Show/hide password toggle dengan icon mata dari Material Icons
- Loading state dengan CircularProgressIndicator saat proses login/register
- Real-time form validation dengan error message yang informatif
- Room Database untuk menyimpan user secara persistent di SQLite
- MVVM Architecture dengan proper separation of concerns
- Modern UI dengan Jetpack Compose dan Material Design 3
- Tema ungu profesional yang konsisten di semua screen
Implementasi ini melibatkan pembuatan beberapa file penting:
- Entity User dengan kolom id, username (unique), dan password
- DAO (UserDao) dengan query insert, login, dan findByUsername
- AppDatabase configuration dengan Singleton pattern
- UserRepository sebagai abstraction layer untuk data access
- LoginViewModel untuk mengelola state dan business logic
- LoginViewModelFactory untuk dependency injection
- Tiga screen UI: LoginScreen, RegisterScreen, dan WelcomeScreen
- MainActivity dengan navigasi logic berdasarkan app state
Untuk testing aplikasi, saya menyediakan default account dengan username "admin" dan password "12345" yang otomatis di-insert saat app pertama kali dibuka. User juga dapat membuat akun baru melalui halaman register, dan data semua user tersimpan persistent di database SQLite.
Melalui project Flo Login ini, saya mempelajari banyak hal penting dalam Android development: bagaimana memisahkan concern antara UI dan business logic, menggunakan ViewModel untuk state management yang reactive, menerapkan Repository pattern untuk data abstraction yang lebih fleksibel, mengintegrasikan Room Database untuk persistent storage yang type-safe, dan menggunakan Kotlin Coroutines untuk operasi async yang clean dan readable. Untuk melihat update database secara real-time, buka App Inspection di Android Studio dan navigasi ke tab Database Inspector. Berikut demo aplikasi Flo Login:
Hasil pembelajaran saya tersebut dapat dilihat pada resource berikut. Demikian hasil eksplorasi saya. Terima kasih sudah menyimak :)
Komentar
Posting Komentar