BMI Calculator App
Pada materi ini kita akan membuat kalkulator untuk menghitung Body Mass Index (BMI). Aplikasi ini akan mencakup beberapa konsep dalam Flutter:
- OOP
- Custom Widget
- Themes
- Fungsi sebagai parameter
- Mengirim data antar halaman
- Dll.
Berikut ini tampilan aplikasi yang akan dibuat.

New Project
Buat project baru dan sesuaikan main.dart seperti berikut ini.
Aplikasi ini menggunakan tema dengan mode gelap dan warna yang custom. Untuk mengatur tema kita atur properti theme pada MaterialApp.
Font Awesome Package
Icon-icon yang digunakan pada aplikasi ini adalah dari package Font Awesome yang bisa didapatkan dari https://pub.dev/packages/. Install package tersebut dengan menambahkan package font_awesome_flutter: ^10.6.0 pada pubspec.yaml.
Constants
Buat sebuah file constants.dart. File ini akan berisi konstanta-konstanta yang akan kita gunakan di dalam kode agar lebih rapi dan mudah dipahami.
Pada baris 8, kita membuat sebuah konstanta Gender dengan tipe data enum. Enum, atau tipe enumerasi, adalah tipe data yang terdiri dari sekumpulan nilai bernama yang disebut elemen, anggota, angka, atau enumerator dari tipe tersebut.
Intinya kita membuat sebuah tipe data sendiri bernama Gender yang nilainya hanya bisa berisi male atau female.
Calculator Class
Buat file calculator.dart. File ini berisi class Calculator yang merupakan logika perhitungan BMI.
Pada baris 10 kita membuat sebuah properti gender dengan tipe data Gender yang kita buat di file constants.dart.
Components
Buat folder components. Folder ini akan berisi widget-widget yang akan kita gunakan di aplikasi. Hal ini untuk membuat aplikasi lebih modular dan widget-widget tersebut dapat digunakan kembali secara berulang.
CustomCard
Buat file custom_card.dart di dalam folder components. File ini berisi widget custom berbentuk kotak yang banyak kita gunakan di aplikasi.
Pada baris 12 kita membuat widget GestureDetector. Widget ini berfungsi untuk mendeteksi gerakan pada widget anaknya seperi menekan atau mengetuk.
IconCard
Buat sebuah file icon_card.dart di dalam folder components. File ini berisi widget icon yang digunakan untuk membuat icon MALE dan 'FEMALE'.
RoundIconButton
Buat sebuah file round_icon_button.dart di dalam folder components. File ini berisi widget tombol berbentuk lingkaran yang digunakan untuk tombol + dan -.
BottomButton
Buat sebuah file bottom_button.dart di dalam folder components. File ini akan berisi widget tombol yang akan digunakan pada bagian bawah aplikasi.
Pages
Buat folder pages yang akan berisi halaman input dan hasil.
Input Page
Buat file input_page.dart didalam folder pages dan buat sebuah class InputPage yang extends StatefulWidget.
| input_page.dart | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | |
Result Page
Buat file result_page.dart di dalam folder pages. File ini adalah halaman hasil perhitungan BMI.
Kode lengkap BMI calculator dapat diakses di https://github.com/yest/bmi_calculator
Assignment
Setelah mempelajari materi diatas, silahkan kerjakan tugas di link berikut ini https://forms.gle/kA6w7AjQHtp96pho9