Pertemuan 12 PPB (B)

 

TUGAS 12
Membuat Login Sederhana MVVM


Nama : Tarisha Falah Basuki
NRP : 5025231043
Kelas : PPB (B)

Aplikasi ini punya 3 layar: Register, Login, Home (setelah login berhasil). Data user disimpan lokal pakai Room. Stack: Kotlin + Jetpack Compose + Room + ViewModel + Navigation Compose.

Berikut langkah-langkah membuat aplikasi Login Sederhana MVVM menggunakan Android Studio:

1. Membuat Project Baru
- Buka Android Studio.
- Klik New Project.
- Pilih template Empty Activity.

2.  Mengisi Konfigurasi Project
- Isi data project seperti berikut:
    Name : LoginMvvmRoom
    Package name : com.example.loginmvvmroom
    Save location : pilih folder penyimpanan
    Language : Java atau Kotlin
    Minimum SDK : pilih API 24 (Android 7.0) 
- Klik Finish.
- Android Studio akan membuat project dan melakukan Gradle build (tunggu sampai selesai).

3. Menambahkan Dependency
Buka build.gradle.kts (Module :app), tambahkan plugin KSP dan dependency Room, ViewModel, Navigation Compose. Klik Sync Now.

4. Merancang Struktur MVVM

app/src/main/java/com/example/loginmvvmroom/
├── data/
│   ├── local/
│   │   ├── UserEntity.kt        # Model tabel Room (1 baris = 1 user)
│   │   ├── UserDao.kt           # Interface query ke database
│   │   └── AppDatabase.kt       # Instance Room database (singleton)
│   └── repository/
│       └── UserRepository.kt    # Jembatan ViewModel <-> DAO
├── ui/
│   ├── screen/
│   │   ├── LoginScreen.kt       # Tampilan form login
│   │   ├── RegisterScreen.kt    # Tampilan form daftar akun
│   │   └── HomeScreen.kt        # Tampilan setelah login sukses
│   └── viewmodel/
│       ├── AuthViewModel.kt        # Logic bisnis: register & login
│       └── AuthViewModelFactory.kt # Factory karena ViewModel butuh parameter repository
├── navigation/
│   └── NavGraph.kt              # Routing antar screen (login/register/home)
└── MainActivity.kt              # Entry point, setup database & viewmodel

5. Isi Kode setiap File/Class

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).


6. Hasil








Comments

Popular posts from this blog

Pertemuan 4-5 PPB (B) - 11/03/2026

Pertemuan 1 PPB (B) - 25/02/2026

Evaluasi Tengah Semester (ETS) PPB (B)