YAŞAM SÜRESİ — GESTURE DETECTOR extends yerine composition

Musa BAL
2 min readSep 22, 2021

MYCONTAİNER.DART

import 'package:flutter/material.dart';

class MyContainer extends StatelessWidget {
// Oluşturduğumuz Widget
final Color? renk;
final Widget? child;
final Function()? onPress; //dışarıdan container e GestureDetector ile fonk atıyoruz

MyContainer({this.renk = Colors.white, this.child, this.onPress = null});

@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPress, //Container GestureDetector ile sarıldı
child: Container(
child: child,
margin: EdgeInsets.all(12.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: renk, // dışarıdan gelen rengi alacak
),
),
);
}
}

MAIN.DART

//import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import './input_page.dart';

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
scaffoldBackgroundColor: Colors.lightBlue,
primaryColor: Colors.lightBlue),
home: InputPage(),
);
}
}

INPUT_PAGE.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;

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
"YAŞAM BEKLENTİSİ",
style: TextStyle(color: Colors.black87),
),
centerTitle: true,
),
body: Column(
children: <Widget>[
Expanded(
child: Row(
children: [
Expanded(
// container kalıp widget
child: MyContainer(), // yazdığımız widgeti kullanıyoruz
),
Expanded(
child: MyContainer(),
),
],
),
),
Expanded(
child: MyContainer(),
),
Expanded(
child: MyContainer(),
),
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 kalıp widget

ICONTEXTWIDGET.DART

import 'package:flutter/material.dart';

class IconTextWidget extends StatelessWidget {
final String? cinsiyet;
final IconData? icon;


IconTextWidget({this.cinsiyet, this.icon}); // CONSTRUCTOR

@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
icon,
size: 30,
),
SizedBox(
height: 12.0,
),
Text(
cinsiyet.toString(),
style: (TextStyle(
fontSize: 20, fontWeight: FontWeight.bold)),
)
],
);
}
}

--

--