Pertemuan 12 PPB (B)
TUGAS 12
Membuat Login Sederhana MVVM
NRP : 5025231043
- Klik New Project.
- Pilih template Empty Activity.
build.gradle.kts (Module :app), tambahkan plugin KSP dan dependency Room, ViewModel, Navigation Compose. Klik Sync Now.UserEntity.kt
File ini berisi definisi entitas (entity) yang merepresentasikan tabel user pada database Room. Setiap objek UserEntity akan disimpan sebagai satu baris data yang berisi informasi pengguna seperti username dan password.
UserDao.kt
File ini berisi Data Access Object (DAO) yang digunakan untuk berinteraksi dengan database Room. Di dalamnya terdapat fungsi-fungsi query seperti menambahkan data pengguna baru, mencari pengguna berdasarkan username, dan melakukan validasi login.
AppDatabase.kt
File ini berfungsi sebagai konfigurasi utama database Room dan menjadi penghubung antara aplikasi dengan tabel-tabel yang ada. Kelas ini dibuat menggunakan pola Singleton agar hanya terdapat satu instance database yang digunakan selama aplikasi berjalan.
UserRepository.kt
Repository bertindak sebagai lapisan perantara antara ViewModel dan database. Dengan adanya repository, ViewModel tidak perlu berinteraksi langsung dengan DAO sehingga kode menjadi lebih terstruktur, mudah diuji, dan mengikuti prinsip MVVM dengan baik.
AuthViewModel.kt
File ini berisi logika bisnis (business logic) yang berkaitan dengan proses autentikasi pengguna, seperti registrasi akun dan login. ViewModel juga bertugas menyimpan serta mengelola state UI agar data tetap tersedia meskipun terjadi perubahan konfigurasi, seperti rotasi layar.
AuthViewModelFactory.kt
Karena AuthViewModel membutuhkan objek UserRepository sebagai parameter konstruktor, maka diperlukan ViewModel Factory untuk membuat instance ViewModel tersebut. Factory ini memastikan dependency yang dibutuhkan ViewModel dapat diberikan dengan benar saat proses inisialisasi.
LoginScreen.kt
File ini berisi tampilan halaman login yang dibuat menggunakan Jetpack Compose. Pengguna dapat memasukkan username dan password, kemudian data tersebut akan dikirim ke ViewModel untuk dilakukan proses validasi login.
RegisterScreen.kt
File ini berisi tampilan halaman registrasi akun baru. Pengguna dapat mengisi data yang diperlukan untuk membuat akun, kemudian data tersebut akan diproses oleh ViewModel dan disimpan ke database melalui Repository.
HomeScreen.kt
File ini merupakan halaman utama yang ditampilkan setelah pengguna berhasil login. Pada implementasi sederhana, halaman ini dapat menampilkan pesan sambutan, informasi akun yang sedang digunakan, atau tombol logout untuk kembali ke halaman login.
NavGraph.kt
File ini berfungsi untuk mengatur navigasi antar halaman menggunakan Navigation Compose. Semua route seperti Login, Register, dan Home didefinisikan di sini sehingga perpindahan antar screen dapat dikelola secara terpusat dan lebih mudah dipelihara.
MainActivity.kt
Merupakan entry point utama aplikasi Android yang pertama kali dijalankan saat aplikasi dibuka. Pada file ini dilakukan inisialisasi database Room, pembuatan Repository dan ViewModel, serta pemanggilan NavGraph sebagai root composable untuk menjalankan seluruh alur aplikasi.
Dengan struktur tersebut, setiap layer memiliki tanggung jawab yang jelas: Room Database menangani penyimpanan data, Repository mengelola akses data, ViewModel mengelola logika bisnis dan state UI, sedangkan Compose Screen bertugas menampilkan antarmuka kepada pengguna sesuai pola arsitektur MVVM (Model-View-ViewModel).
Comments
Post a Comment