TUGAS 7 - LOGIN SCREEN

 Nama : Dimas Aria Pujangga

NRP     : 5025211212

Kelas    : PPB (A)


Output:



Source Code:


Penjelasan:

MainActivity: Activity utama yang menggunakan Jetpack Compose untuk membangun interface login. Menggunakan MaterialTheme sebagai base theme dan Surface dengan background color ungu muda (#F8F4FF) untuk styling visual. Memanggil composable function AuthenticationInterface() sebagai konten utama aplikasi.

AuthenticationInterface: Composable function utama yang mengelola UI dan state management untuk halaman login. Menggunakan tiga state variables: userEmail untuk menyimpan input email, userPassword untuk input password, dan isPasswordVisible untuk mengontrol visibility password. Layout menggunakan Column dengan center alignment dan padding 24dp.

UI Components: Terdiri dari Text header "Welcome Back!" dengan fontSize 28sp, dua input field terpisah untuk email dan password, serta Button untuk proses login. Spacing antar komponen diatur menggunakan Spacer dengan height yang konsisten.

EmailInputField: Composable function untuk input email yang menggunakan OutlinedTextField dengan label "Email", singleLine true, dan keyboard options yang di-set ke KeyboardType.Email dengan ImeAction.Next untuk navigasi yang smooth ke field berikutnya.

PasswordInputField: Composable function untuk input password dengan fitur hide/show password. Menggunakan PasswordVisualTransformation() untuk menyembunyikan karakter password secara default dan VisualTransformation.None untuk menampilkan password. Dilengkapi dengan TextButton "Show/Hide" sebagai trailingIcon untuk toggle visibility password.

Password Visibility Feature: Implementasi show/hide password menggunakan state isPasswordVisible yang mengontrol visualTransformation. Ketika password tersembunyi, karakter akan ditampilkan sebagai bullet points, dan ketika visible, karakter akan ditampilkan normal. TextButton menampilkan text "Show" atau "Hide" sesuai dengan state saat ini.

LoginButton: Composable function untuk tombol login yang memanggil function performLoginValidation() ketika diklik. Button menggunakan modifier fillMaxWidth() untuk memenuhi lebar layar dan mengirimkan parameter email, password, dan context untuk proses validasi.

performLoginValidation: Function terpisah yang menangani seluruh logic validasi login menggunakan when expression. Validasi meliputi: email kosong, format email tidak valid menggunakan Patterns.EMAIL_ADDRESS.matcher(), password kosong, dan panjang password kurang dari 6 karakter. Setiap kondisi error menampilkan Toast message yang sesuai.

Input Validation: Email validation menggunakan Android's built-in Patterns.EMAIL_ADDRESS untuk memastikan format email valid. Password validation memeriksa minimal 6 karakter untuk keamanan basic. Semua error handling menggunakan Toast messages untuk memberikan feedback langsung kepada user.

State Management: Menggunakan remember dan mutableStateOf untuk reactive state management dalam Compose. Setiap perubahan pada state akan secara otomatis memicu recomposition pada UI components yang terkait, mengikuti prinsip declarative UI.

Keyboard Options: TextField dilengkapi dengan keyboard options yang sesuai - KeyboardType.Email untuk email field dan KeyboardType.Password untuk password field. ImeAction diatur untuk navigasi yang intuitif (Next untuk email, Done untuk password).


Comments

Popular posts from this blog

Menemukan Dompet

TUGAS PERTEMUAN 10 PBKK

TUGAS PERTEMUAN 13 PBKK