Flutter ile Uygulamalı Projeler #1 Vücut Kitle İndeksi

Ahmet Veysel
3 min readApr 24, 2020

--

Merhaba arkadaşlar. Bu yazım bir serinin başlangıcı olacağını umarak başlıyorum. Bu serimizde Flutter ile küçük projeler geliştireceğiz ve en son web sitesine uygulamamızı yüklenmiş olarak paylaşacağız.

Projemizin web’e yüklenmiş haline buradan gidebiliriz.

Bu yazımızda Flutter ile Uygulamalı Projeler serimizin ilk projesi olan Vücut Kitle İndeksi nasıl hesaplanır onu göreceğiz. Projemizde basit olarak boy ve kilo bilgilerini gireceğimiz 2 adet TextFormField, 1 adet “Hesapla” butonu ve sonucu gösterecek bir “Text” widgeti ekleyeceğiz. Bunları kapsayacak 1 adet Form tanımlıyoruz ve buna “key” değeri atıyoruz.

boy, kilo ve vki değerlerini “double”, sonuç değerini “String” olarak tanımlıyoruz.

Vücut Kitle İndeksi aşağıdaki gibi hesaplanır.

Vücut Kitle İndeksi = Kilo / (Boy*Boy)
Kilo=kg || Boy=cm

İndeks değerine göre,

  1. vki < 18.5 ise Zayıf
  2. 18.5 ≤ vki < 25 ise Normal Kilolu
  3. 25 ≤ vki < 30 ise Fazla Kilolu
  4. 30≤ vki < 35 ise 1. Derece Obezite
  5. 35≤ vki < 40 ise 2. Derece Obezite
  6. 40≤ vki < 50 ise 3. Derece Obezite
  7. 50≤ vki < 60 ise Süper Obezite
  8. 60≤ vki ise Süper Süper Obezite

Yukarıdaki değerlere göre çıkan değerimizi de yorumlayacağız. Programımız aşağıdaki gibi olacak.

Program içerisinde kullandığımız kodlar aşağıdaki gibidir.

import 'package:flutter/material.dart';class VucutKitleIndeksi extends StatefulWidget {@override_VucutKitleIndeksiState createState() => _VucutKitleIndeksiState();}class _VucutKitleIndeksiState extends State<VucutKitleIndeksi> {double boy, kilo, vki;var _formKey = GlobalKey<FormState>();String sonuc;@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Vücut Kitle İndeksi by avdisx"),),body: Container(child: Form(key: _formKey,child: Column(children: <Widget>[Container(decoration: BoxDecoration(border: Border.all()),margin: EdgeInsets.all(25),padding: EdgeInsets.symmetric(horizontal: 20),child: TextFormField(keyboardType: TextInputType.number,validator: (value) => validateSayi(value),onSaved: (value) => boy = double.parse(value) / 100,decoration: InputDecoration(labelText: "Boy Giriniz. (cm)",),),),Container(decoration: BoxDecoration(border: Border.all()),margin: EdgeInsets.all(25),padding: EdgeInsets.symmetric(horizontal: 20),child: TextFormField(keyboardType: TextInputType.number,validator: (value) => validateSayi(value),onSaved: (value) => kilo = double.parse(value),decoration: InputDecoration(labelText: "Kilo Giriniz. (kg)",),),),RaisedButton(child: Text("Hesapla..."),onPressed: () {if (_formKey.currentState.validate()) {_formKey.currentState.save();print("$boy $kilo");setState(() {vkiHesapla();});}},),vki != null? Text("Vücut Kitle İndeksi: $vki",style: TextStyle(fontSize: 24),): Text("Lütfen değer Giriniz",style: TextStyle(fontSize: 24),),sonuc != null? Text("$sonuc",style: TextStyle(fontSize: 24),): Container(),],),),),);}void vkiHesapla() {vki = kilo / (boy * boy);vki = double.parse(vki.toStringAsFixed(2));if (vki < 18.5) {sonuc = "Zayıf. Yemek Ye!!";} else if (18.5 <= vki && vki < 25) {sonuc = "Normal Kilolu";} else if (25 <= vki && vki < 30) {sonuc = "Fazla Kilolu";} else if (30 <= vki && vki < 35) {sonuc = "1. Derece Obezite";} else if (35 <= vki && vki < 40) {sonuc = "2. Derece Obezite";} else if (40 <= vki && vki < 50) {sonuc = "3. Derece Obezite";} else if (50 <= vki && vki < 60) {sonuc = "Süper Süper Obezite";}else if (vki > 60) {sonuc = "Süper Süper Obezite";}else {sonuc = "hata!1";}}validateSayi(String value) {if (value.length < 1) return 'Geçersiz';try {double.parse(value);} catch (e) {return "Geçersiz";}}}

Projenin GitHub sayfasına git.

Lütfen destek için paylaşınız. İyi kodlamalar 😊

instagram: avdisx
twitter: avdisx
GitHub: avdisx

--

--