Aplikasi Kalkulator BMI sederhana🧍♂️⬆️
Membuat Aplikasi Kalkulator BMI Menggunakan Flutter (Tema Dark Hitam–Merah)
Pada artikel ini saya akan membahas struktur dan fitur aplikasi Kalkulator BMI (Body Mass Index) yang dibuat menggunakan Flutter. Aplikasi ini dirancang dengan tampilan dark theme (hitam–merah), animasi interaktif, serta responsif di berbagai ukuran layar (HP, tablet, hingga desktop).
Aplikasi ini cocok sebagai:
Proyek latihan Flutter
Contoh UI/UX modern
Referensi aplikasi kalkulator kesehatan sederhana
1. Apa itu BMI?
BMI (Body Mass Index) adalah metode sederhana untuk mengetahui apakah berat badan seseorang termasuk:
Kurus (Underweight)
Normal
Kelebihan berat badan (Overweight)
Obesitas
Rumus BMI:
Metric:
berat (kg) / (tinggi (m) × tinggi (m))Imperial:
703 × berat (lb) / (tinggi (in) × tinggi (in))
Aplikasi ini mendukung dua sistem satuan tersebut.
2. Struktur Utama Aplikasi Flutter
Aplikasi disusun dalam satu file main.dart dengan beberapa bagian utama:
MyApp→ root aplikasi dan pengaturan temaBMICalculatorPage→ halaman utama input dataResultPage→ halaman hasil perhitungan BMIHistoryPage→ halaman riwayat BMIBMIEntry→ model data BMI
Struktur ini memudahkan pengembangan dan pemeliharaan kode.
Beginilah tampilan aplikasi kalkulator bmi:
3. Tema Dark Hitam–Merah
Aplikasi menggunakan Dark Theme agar terlihat modern dan nyaman di mata.
Ciri tema:
Background: Hitam (
Colors.black)Aksen utama: Merah (
Colors.redAccent)Card: Abu gelap (
#121212)
Tema diatur melalui ThemeData.dark() lalu dikustomisasi menggunakan copyWith().
4. Fitur Input Gender
Pengguna dapat memilih gender:
Male
Female
Other
Implementasi:
Menggunakan
GestureDetectorAnimatedContainermemberi efek animasi saat dipilihWarna dan border berubah ketika aktif
Fitur ini meningkatkan interaksi dan estetika UI.
5. Fitur Input Usia (Age)
Bagian usia dilengkapi dengan:
Tombol (+ dan -) untuk menaikkan / menurunkan usia
TextField kecil untuk input manual
Keunggulan:
Tombol menggunakan animasi scale (feedback visual)
Nilai usia langsung sinkron dengan state
Aman dari error karena dibatasi angka valid
6. Pilihan Satuan (Metric & Imperial)
Pengguna bisa memilih:
Metric → kg & cm
Imperial → lb & inch
Fitur penting:
Konversi otomatis saat berpindah satuan
Data tetap konsisten
Menggunakan
ToggleButtons
Ini membuat aplikasi fleksibel untuk pengguna internasional.
7. Input Tinggi Badan (Height)
Tinggi badan diinput menggunakan Slider:
Metric: 100 – 220 cm
Imperial: 40 – 90 inch
Kelebihan:
Lebih intuitif dibanding TextField
Nilai langsung terlihat
Slider otomatis menyesuaikan satuan
8. Input Berat Badan (Weight)
Berat badan dapat diinput dengan:
TextField (manual)
Tombol + dan - (increment 0.5)
Keunggulan:
Validasi angka
Mudah digunakan
Sinkron dengan state Flutter
9. Tombol Hitung BMI dengan Animasi
Tombol Hitung BMI memiliki:
Animasi tekan (scale)
Warna kontras
Responsif di berbagai ukuran layar
Saat ditekan:
BMI dihitung
Kategori BMI ditentukan
Data disimpan ke history
Berpindah ke halaman hasil
10. Halaman Hasil BMI (Result Page)
Di halaman hasil, pengguna melihat:
Nilai BMI
Kategori (Normal, Overweight, dll)
Progress Indicator animasi
Saran kesehatan singkat
Fitur tambahan:
Tombol Salin hasil (copy ke clipboard)
Animasi Circular Progress
11. Riwayat Perhitungan BMI (History)
Aplikasi menyimpan riwayat BMI selama aplikasi berjalan.
Isi history:
Nilai BMI
Kategori
Waktu perhitungan
Tinggi & berat badan
Pengguna juga dapat:
Melihat total data
Menghapus semua riwayat
Catatan: pada versi ini, history masih in-memory (tidak tersimpan setelah app ditutup).
12. Responsif di Berbagai Layar
Aplikasi dibuat responsive dengan:
LayoutBuilderConstrainedBoxPenyesuaian layout untuk layar lebar
Hasilnya:
HP → layout vertikal
Tablet/Desktop → layout lebih lebar dan rapi
13. Kesimpulan
Aplikasi Kalkulator BMI ini memiliki:
UI modern (dark theme hitam–merah)
Animasi interaktif
Fitur lengkap
Responsif
Struktur kode rapi
Sangat cocok sebagai contoh proyek Flutter tingkat pemula–menengah dan dapat dikembangkan lebih lanjut (penyimpanan lokal, grafik, atau cloud).
BY: RIZQI RESDHIANA XI RPL II
Comments
Post a Comment