TUGAS 6 - APLIKASI CURRENCY CONVERTER
Nama : Dimas Aria Pujangga
NRP : 5025211212
Kelas : PPB (A)
MainActivity: Activity utama yang menggunakan Jetpack Compose untuk membangun UI currency converter. Menggunakan enableEdgeToEdge()
untuk tampilan full-screen dan memanggil composable function MoneyExchangeInterface()
sebagai konten utama aplikasi.
exchangeRatesMap: Map yang berisi kurs mata uang dengan USD sebagai base currency. Setiap mata uang memiliki nilai tukar terhadap 1 USD, seperti IDR = 16000, EUR = 0.93, JPY = 151.5, dan mata uang lainnya.
MoneyExchangeInterface: Composable function utama yang mengelola UI dan state aplikasi. Menggunakan state variables untuk menyimpan input amount (inputValue
), mata uang asal (sourceCurrency
), mata uang tujuan (targetCurrency
), dan hasil konversi (calculationResult
).
UI Components: Terdiri dari Text header untuk judul aplikasi, OutlinedTextField untuk input jumlah uang dengan filter hanya angka dan titik desimal, Row berisi dua CurrencySelector untuk memilih mata uang asal dan tujuan, Button untuk melakukan konversi, dan DisplayResultCard untuk menampilkan hasil.
CurrencySelector: Composable function untuk dropdown pemilihan mata uang. Menggunakan OutlinedButton yang menampilkan mata uang terpilih dan DropdownMenu yang berisi daftar semua mata uang available. State isDropdownExpanded
mengontrol tampilan dropdown.
DisplayResultCard: Composable function yang menampilkan hasil konversi dalam bentuk Card dengan styling Material Design. Menampilkan format "Result: [jumlah] [mata uang asal] = [hasil] [mata uang tujuan]" atau pesan placeholder jika belum ada hasil.
performCurrencyConversion: Function terpisah yang menangani logika konversi mata uang. Melakukan validasi input dengan toDoubleOrNull()
, menampilkan Toast error jika input tidak valid, menangani kasus sama mata uang, dan menghitung konversi melalui USD sebagai perantara.
Logika Konversi: Menggunakan metode dua langkah - pertama mengkonversi jumlah input dari mata uang asal ke USD dengan membagi dengan rate mata uang asal, kemudian mengkonversi dari USD ke mata uang tujuan dengan mengalikan rate mata uang tujuan. Hasil diformat dengan 2 decimal places menggunakan "%.2f".format()
.
Input Validation: TextField menggunakan filter untuk hanya menerima input digit dan titik desimal. Function konversi memvalidasi input numerik dan menampilkan Toast message jika input tidak valid atau kosong.
State Management: Menggunakan remember
dan mutableStateOf
untuk mengelola state reactive. Setiap perubahan pada state otomatis memicu recomposition UI sesuai dengan prinsip Jetpack Compose.
Comments
Post a Comment