Tugas Pertemuan 12 - MVVM & Room Login Page
Nama: Dewa Putu Ananda Taurean Mahesa
NRP: 5025231158
Kelas: Pemrograman Perangkat Bergerak C
1. Penjelasan Singkat Proyek
Sebuah aplikasi login sederhana yang mengimplementasikan teknologi pengembangan Android modern. Fitur utama mencakup:
- Penyediaan input username dan password
- Proses validasi login
- Menampilkan indikator status berhasil atau gagal login
- Penyimpanan data kredensial secara lokal dengan Room database
Aplikasi dikembangkan dengan Android Studio yang memanfaatkan Jetpack Compose, arsitektur MVVM, Room database, dan SQLite.
2. Arsitektur Aplikasi
MVVM (Model-View-ViewModel) digunakan untuk memisahkan UI dan logika bisnis. Hal ini membuat kode lebih rapi, memudahkan maintenance dan pengembangan fitur lanjutan.
Room database bertindak sebagai lapisan abstraksi di atas SQLite untuk mengelola database lokal. Room memberikan keamanan dalam penulisan query dan mendukung eksekusi secara asinkron.
3. Implementasi
a. Konfigurasi & Struktur Proyek
Dependensi perlu ditambahkan pada file build-gradle terlebih dahulu. Pengaturan tambahan juga perlu di-set pada gradle.properties.
Pemisahan modul dilakukan dengan membuat package di dalam direktori mvvmloginpage, yang meliputi:
- data: meliputi local (dao, database, entity) dan repository
- ui: meliputi screen dan theme
- viewmodel: menyimpan logika dan state aplikasi
b. Lapisan Data (Room Database)
- Entity (User.kt): Dideklarasikan sebagai tabel users dengan atribut berupa id (primary key yang di-generate otomatis), username, dan password.
- Data Access Object / DAO (UserDao.kt): Menyediakan operasi interaksi ke database, yaitu fungsi @Insert untuk menambahkan data pengguna, serta @Query untuk memvalidasi pencocokan username dan password.
- Database (AppDatabase.kt): Kelas utama konfigurasi Room yang mengimplementasikan pola Singleton (INSTANCE) agar aplikasi hanya membentuk satu instansi database secara global dengan nama login_db.
c. Lapisan Logika (Repository & ViewModel)
- Repository (UserRepository.kt): Berperan sebagai perantara yang memanggil fungsi dari UserDao.
- ViewModel (LoginViewModel.kt): Memproses logika bisnis, seperti mengeksekusi operasi asinkron dengan Coroutine (viewModelScope.launch) untuk memvalidasi query dari repositori. ViewModel juga memperbarui state UI menjadi "Login Berhasil" atau "Username atau Password Salah" berdasarkan hasil query. Disertakan pula fungsi tambahan untuk menyisipkan data dummy pengguna ke dalam database.
d. UI (Jetpack Compose)
UI dikembangkan pada LoginScreen.kt di dalam direktori screen. Pengembangan UI ini menggunakan komponen Material Design 3, yang mencakup:
- OutlinedTextField untuk memasukkan username dan password
- Penambahan icon visual (profil dan kunci)
- Implementasi PasswordVisualTrasnformation untuk menutupi karakter password demi keamanan visual
e. Integrasi Komponen
Seluruh komponen disatukan pada MainActivity.kt. Di dalam onCreate, sistem melakukan inisiasi terhadap AppDatabase, UserRepository, dan LoginViewModelFactory. Database menggunakan satu fungsi penyisipan pengguna dummy dan diteruskan dengan pemanggilan UI (LoginScreen).
Comments
Post a Comment