Learn
← Previous Next →

Hari 28: Mini Project — Kalkulator BMI

60 min Last updated 09 Apr 2026

BMI Calculator App

BMI (Body Mass Index) = berat (kg) / tinggi² (m). Kita buat kalkulator BMI yang lengkap.

import "package:flutter/material.dart";

enum Gender { pria, wanita }

class BMIResult {
  final double bmi;
  BMIResult(this.bmi);

  String get kategori {
    if (bmi < 18.5) return "Kurus (Underweight)";
    if (bmi < 25.0) return "Normal";
    if (bmi < 30.0) return "Kelebihan Berat (Overweight)";
    return "Obesitas";
  }

  Color get warna {
    if (bmi < 18.5) return Colors.blue;
    if (bmi < 25.0) return Colors.green;
    if (bmi < 30.0) return Colors.orange;
    return Colors.red;
  }

  String get saran {
    if (bmi < 18.5) return "Tingkatkan asupan kalori dan protein. Konsultasikan dengan dokter gizi.";
    if (bmi < 25.0) return "Pertahankan pola makan sehat dan olahraga rutin!";
    if (bmi < 30.0) return "Kurangi konsumsi makanan berlemak dan perbanyak olahraga.";
    return "Segera konsultasikan dengan dokter. Diet ketat dan olahraga teratur diperlukan.";
  }

  String get display => bmi.toStringAsFixed(1);
}

class BMICalculator {
  static BMIResult hitung(double beratKg, double tinggiCm) {
    if (beratKg <= 0 || tinggiCm <= 0) throw ArgumentError("Berat dan tinggi harus positif");
    double tinggiM = tinggiCm / 100;
    return BMIResult(beratKg / (tinggiM * tinggiM));
  }
}

💡 Notice: Tinggi harus dikonversi ke meter (bagi 100) sebelum menghitung BMI.

Assignment

Buat BMI Calculator lengkap dengan kategori dan emoji status.

Expected output:

45.0kg / 165.0cm → BMI: 16.5 🔵 Kurus
65.0kg / 170.0cm → BMI: 22.5 🟢 Normal
80.0kg / 165.0cm → BMI: 29.4 🟡 Overweight
100.0kg / 168.0cm → BMI: 35.4 🔴 Obesitas
Dart main.dart
Solution
Output