YAŞAM SÜRESİ — Metod Extraction

Musa BAL
2 min readSep 23, 2021
import 'package:deneme/styles.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import './myContainer.dart';
import './iconTextWidget.dart';

class InputPage extends StatefulWidget {
@override
State<InputPage> createState() => _InputPageState();
}

class _InputPageState extends State<InputPage> {
String? seciliCinsiyet;
double haftalikSpor = 0.0; // haftalık spor slideri için
double icilenSigara = 0.0; // sigara slideri için
int boy = 170;
int kilo = 50;

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
"YAŞAM BEKLENTİSİ",
style: TextStyle(color: Colors.black87),
),
centerTitle: true,
),
body: Column(
crossAxisAlignment: CrossAxisAlignment
.stretch, // kolon içindeki kolonları iki yana doldurur
children: <Widget>[
Expanded(
child: Row(
children: [
Expanded(
// container kalıp widget
child: MyContainer(
child: buildRowOutlineButton("BOY"), // extract metod kullandı, başlığı parametre ile aldık
), // yazdığımız widgeti kullanıyoruz
),
Expanded(
child: MyContainer(
child: buildRowOutlineButton("KİLO"), // extract metod kullandık
), // yazdığım),
),
],
),
),
Expanded(
child: MyContainer(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Haftada kaç gün spor yapıyorsunuz?",
style: kMetinStili,
),
SizedBox(
height: 8,
),
Text(
haftalikSpor.round().toString(), // kesirli ifadeyi yuvarla
//"${icilenSigara.round().toString()}",
style: kSayiStili,
),
Slider(
min: 0,
max: 7,
divisions: 7, // slider çubuğu bölme sayısı
onChanged: (double newValue) {
setState(() {
haftalikSpor = newValue;
});
}, // tetiklenecek fonksiyon
value: haftalikSpor, // slider default pozisyonu
),
],
),
),
),
Expanded(
child: MyContainer(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Günde kaç sigara içiyorsunuz?",
style: kMetinStili,
),
SizedBox(height: 8),
Text(
icilenSigara.round().toString(), // kesirli ifadeyi yuvarla
//"${icilenSigara.round().toString()}",
style: kSayiStili,
),
Slider(
min: 0,
max: 30,
divisions: 30, // slider çubuğu bölme sayısı
onChanged: (double newValue) {
setState(() {
icilenSigara = newValue;
});
}, // tetiklenecek fonksiyon
value: icilenSigara, // slider default pozisyonu
),
],
),
),
),
Expanded(
child: Row(
children: [
Expanded(
child: MyContainer(
onPress: () {
setState(() {
seciliCinsiyet = "k";
});
},
// bu sayede container buton gibi davranır
renk:
seciliCinsiyet == "k" ? Colors.grey[400] : Colors.white,
//Widgeti parametre ile kullandık
child: IconTextWidget(
cinsiyet: "KADINLAR",
icon: FontAwesomeIcons.venus,
),
), //widget parametreli
),
Expanded(
child: MyContainer(
onPress: () {
setState(
() {
seciliCinsiyet = "e";
},
);
},
renk:
seciliCinsiyet == "e" ? Colors.grey[400] : Colors.white,
//Widgeti parametre ile kullandık
child: IconTextWidget(
cinsiyet: "ERKEKLER",
icon: FontAwesomeIcons.mars,
),
),
),
],
),
),
Container(
child: ElevatedButton(
style: ButtonStyle(
shape: MaterialStateProperty.all<RoundedRectangleBorder>(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
side: BorderSide(color: Colors.teal, width: 2.0)))),
child: Text('Submit'),
onPressed: () {},
),
),
],
),
);
}
// metod extractıon
Row buildRowOutlineButton(String label) { // başlık için parametre
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
RotatedBox(
quarterTurns: 3,
child: Text(
label, // başlık kilo mu boy mu
style:
kMetinStili, // styles dosyasından stilleri çekiyoruz
),
),
SizedBox(
width: 10,
),
RotatedBox(
quarterTurns: 3,
child: Text(
label=="BOY"?boy.toString():kilo.toString(),
style: kSayiStili,
),
),
SizedBox(width: 16),
Column(
mainAxisAlignment: MainAxisAlignment.center,
//crossAxisAlignment: CrossAxisAlignment.center,
children: [
ButtonTheme(
minWidth: 36,
child: OutlinedButton(
//borderSide:BorderSide(color: Colors.lightBlue),
child: Icon(
FontAwesomeIcons.plus,
size: 16,
),
onPressed: () {
setState(() {
label=="BOY" ? boy++:kilo++;
});
},
),
),
SizedBox(
height: 10,
),
ButtonTheme(
minWidth: 36,
child: OutlinedButton(
child: Icon(
FontAwesomeIcons.minus,
size: 16,
),
onPressed: () {
setState(() {
label=="BOY" ?boy--:kilo--;
});
},
),
),
],
)
],
);
}
}

//container kalıp widget

--

--