5.2 KiB
Login Vault (Android)
Aplikasi Flutter untuk menyimpan login & data pribadi di database lokal Android. Semua data tersimpan di perangkat (offline-first, tanpa server).
- Minimum Android: 10 (API 29)
- Compile / Target SDK: 36
- Package:
com.omahcitra.loginvault
Fitur
- Autentikasi lokal — registrasi/login via email + password aplikasi. Email disimpan di secure storage sebagai identitas.
- Login dengan sidik jari (biometric) — setelah registrasi, kamu dapat mengaktifkan fingerprint di Pengaturan. Saat membuka aplikasi, dialog sidik jari muncul otomatis dan mem-bypass form email/password bila verifikasi sukses. Bila dibatalkan, tetap bisa login manual.
- Session timeout — login otomatis logout setelah periode tanpa aktivitas (default 3 menit, bisa diubah: 5/10/15/30/60 menit atau Selamanya).
- Penyimpanan lokal terenkripsi — tiap entri punya:
id:String, unik (primary key)content:String, disimpan terenkripsi (XOR + base64) menggunakan constant key (AppConstants.encryptionKey)
- Dashboard:
- Text search yang mencari
iddi local DB setiap kali pengetikan (live filter, tampil sebagai list id) - Klik item list → konten ditampilkan di bawahnya (expandable)
- Swipe ke kiri untuk hapus → muncul dialog konfirmasi
- Tombol edit di tiap list untuk ubah konten
- Text search yang mencari
- Menu Pengaturan:
- Ubah password aplikasi
- Aktifkan/nonaktifkan login sidik jari (dengan dialog konfirmasi)
- Atur session timeout
- Ganti tema: Gelap (Dark) atau Sistem (System)
- Menu Exit — keluar dari aplikasi
Arsitektur & Keamanan
lib/
├── constants.dart # AppConstants: encryptionKey (constant), session keys
├── encryptor.dart # XOR + base64 obfuscation (constant key)
├── database_helper.dart # sqflite: tabel 'vault' (id PK, content)
├── auth_service.dart # register/login, secure storage, biometric, session
├── theme_provider.dart # theme mode (system/dark), persist via SharedPreferences
├── auth_screen.dart # login/registrasi adaptif (email+password, bypass fingerprint)
├── dashboard_screen.dart # search live, list, expand, swipe-delete, edit
├── settings_screen.dart # ubah password, tema, fingerprint, timeout, exit
├── vault_entry_dialogs.dart# dialog add/edit/confirm
└── main.dart # entrypoint + routing + ThemeProvider
Catatan keamanan penting: Enkripsi konten menggunakan constant key (
AppConstants.encryptionKey) — ini obfuscation ringan, bukan kriptografi yang aman. Sesuai permintaan ("encrypt base64 dengan key sebagai constant"), konten di-database tidak dapat dibaca langsung tanpa key tersebut. Untuk proteksi produksi, gantiEncryptordengan AES menggunakan key yang diturunkan dari password aplikasi +flutter_secure_storage(Android Keystore).
Email & password aplikasi disimpan via flutter_secure_storage (ter-enkripsi di
Android Keystore). Sidik jari menggunakan plugin local_auth (dialog biometric
bawaan Android, memerlukan FlutterFragmentActivity).
Cara build APK
Prasyarat: Flutter SDK (stable), JDK 17, Android SDK (build-tools 34+, platforms 29 & 36).
flutter pub get
flutter build apk --release
# hasil: build/app/outputs/flutter-apk/app-release.apk
Konfigurasi Android
android/app/build.gradle.kts:minSdk = 29,compileSdk = 36,targetSdk = 36,applicationId = com.omahcitra.loginvaultandroid/local.properties:sdk.dir=/path/to/android-sdkandroid/app/src/main/kotlin/.../MainActivity.kt: extendsFlutterFragmentActivity(wajib untuklocal_auth)AndroidManifest.xml: permissionINTERNET(tidak wajib untuk fitur inti, aman dihapus bila tidak ada panggilan jaringan)
APK release di-build dengan debug keystore (signingConfig debug) agar bisa dihasilkan tanpa upload key. Untuk distribusi Play Store, ganti dengan keystore rilis milik Anda.
Instal & jalankan
# mode debug di device/emulator
flutter run
# atau install APK hasil build
adb install build/app/outputs/flutter-apk/app-release.apk
Alur penggunaan
- Pertama install → layar registrasi: isi email + password aplikasi.
- Setelah login → Dashboard:
- Ketik di kolom pencarian untuk filter
idsecara live. - Tap sebuah
id→ kontennya muncul di bawah. - Swipe kiri pada item → konfirmasi hapus.
- Tap ikon edit → ubah konten.
- Tombol
+(FAB) → tambah entri baru (id unik + konten).
- Ketik di kolom pencarian untuk filter
- Pengaturan (ikon gear):
- Ubah password aplikasi
- Aktifkan "Login dengan sidik jari" (muncul dialog konfirmasi; batal = tetap off)
- Atur session timeout
- Ganti tema, atau Exit.
Dependencies utama
| Paket | Fungsi |
|---|---|
sqflite |
local database SQLite |
flutter_secure_storage |
simpan email & password aplikasi (Keystore) |
local_auth |
login dengan sidik jari (biometric Android) |
provider |
state management (theme) |
shared_preferences |
persist tema & session timeout |
crypto |
utilitas (tidak wajib, tersedia) |
© OmahCitra — aplikasi vault login lokal.