Merhabalar.

Flutter eğitimlerimize Container ile devam ediyoruz.

Container’ı, Flutter’da istediğimiz gibi konumlandırabileceğimiz, şekillendirebileceğimiz ve içerisine nesneler yerleştirebileceğimiz kutular olarak tanımlayabiliriz. child özelliği ile içerisine tanımlanan nesnenin boyutunu otomatik olarak alabileceği gibi width ve height özellikleri ile kendimiz belirli bir boyutta tanımlayabiliriz. Eğer içerisine child özelliğini tanımlamasanız otomatik olarak ekranda verilen alana göre en büyük boyutu alır.

Bir flutter projesi başlattığımızda MaterialApp’in home özelliğine Scaffold nesnesini vermiştik. Çünkü içindeki özellikler bizim uygulamayı çok güzel bir tasarımda yaratmamızı sağlıyordu. Bir Container bir widget olduğu için Widget değer alabilecek her özelliğe verilebilir.

home özelliğine bir container widget’ı verilebilir.

Önce bunun yapılabilirliğini görelim. Sonrasında devam edelim.

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    debugShowCheckedModeBanner: false,
    home: Container(
      color: Colors.amber,
    ),
  ));
}
home: Container(
      color: Colors.amber,
    ),

Gördüğünüz gibi ekranı tamamen kapladı.

Artık bu Container’ın içinde bir uygulama yaratabiliriz. Ancak bu hiç akıllı bir davranış olmayacaktır. Çünkü Flutter’ın bize bunları daha kolay yapabilmemiz için sunduğu sınıflar vardır.

Scaffold’un appBar özelliği uygulamanın en üst kısmını belirtir.

body özelliği ise uygulamanın gövdesini belirtir. body özelliğine bir Container widget’ı verilebilir.

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    debugShowCheckedModeBanner: false,
    home: Scaffold(
      appBar: AppBar(
        title: Text("Brainy Tech"),
        backgroundColor: Colors.blue,
        centerTitle: true,
      ),
      body: Container(
        color: Colors.amber,
      ),
    ),
  ));
}
body: Container(
        color: Colors.amber,
      ),

Bir container’ın height ve width değerleri belirlenmediyse ve child özelliğine bir nesne atanmadıysa tüm alanı kaplar. Yukarıda gördüğümüz gibi.

Şimdi yükseklik ve genişlik değeri verelim ve nasıl davranacağına bakalım.

body: Container(
        color: Colors.amber,
        height: 200,
        width: 200,
      ),

Aşağıda gördüğünüz gibi Container sol üstten itibaren kenarlarda hiç boşluk bırakmadan yerleşti.

Bu Container’ın çevresindeki nesnelerle, ve uygulamanın kenarlarıyla olan uzaklığını margin özelliği ile ayarlayabiliriz.

Margin şu şekilde değerler alır.

Bir nesnenin kenarları left, right, top, bottom olarak isimlendirilir.

Eğer tek tek değerleri verilecekse

// margin: EdgeInsets.only(left: 5, right: 2, bottom: 3, top: 10),

Bütün kenarlardan eşit uzaklık verilecekse

margin: EdgeInsets.all(5),

Dikey ve Yatay kenarlara aynı anda aynı değerler verilecekse aşağıdaki yöntem kullanılır.

 // margin: EdgeInsets.symmetric(vertical: 5, horizontal: 10),

Eğer margin değerlerini sırası ile left (sol), top (üst), right (sağ) ve bottom (alt) ile belirlemek isterseniz aşağıdaki gibi yazabilirsiniz.

margin: EdgeInsets.fromLTRB(5, 10, 5, 7),
// margin: EdgeInsets.only(left: 5, right: 2, bottom: 3, top: 10),
        // margin: EdgeInsets.all(5),
        // margin: EdgeInsets.symmetric(vertical: 5, horizontal: 10),
        margin: EdgeInsets.fromLTRB(5, 10, 5, 7),

Child Özelliği

Bu özellik sayesinde Container içine bir nesne koyulabilir. Tabii koyulan nesnenin özelliklerine göre içerisine farklı nesnelerde yerleştirilebilir.

Şimdi bu container’ın içine bir text yazdıralım.

body: Container(
        color: Colors.amber,
        height: 200,
        width: 200,
        // margin: EdgeInsets.only(left: 5, right: 2, bottom: 3, top: 10),
        // margin: EdgeInsets.all(5),
        // margin: EdgeInsets.symmetric(vertical: 5, horizontal: 10),
        margin: EdgeInsets.fromLTRB(5, 10, 5, 7),
        child: Text("Brainy Tech", style: TextStyle(color: Colors.black,
            fontSize: 24, fontWeight: FontWeight.bold, fontStyle: FontStyle.italic),),
        
      ),

Text’in konumuyla alakalı hiçbir bilgi verilmediyse sol üstten yazdırıldığı görülebilir.

Padding Özelliği

Container’ın içindeki nesnelerin kenarlara olan uzaklıklarını ayarlamak için padding özelliği kullanılır.

Kullanımı margin ile aynıdır.

// padding: EdgeInsets.only(left: 5, right: 2, bottom: 3, top: 10),
        // padding: EdgeInsets.all(5),
        // padding: EdgeInsets.symmetric(vertical: 5, horizontal: 10),
        padding: EdgeInsets.fromLTRB(5, 10, 5, 7),

Alignment

Şimdi container içerisine tanımladığımız nesnenin container içerisindeki konumunu değiştirelim. Bunun için alignment özelliğini kullanacağız.

alignment: Alignment.center,

Bir yazıda bir özelliğin bütün durumlarını anlatabilme imkanı yok. O yüzden böyle durumlarda kendiniz diğer durumları denemelisiniz.

alignment özelliğini Alignment.centerAlignment.topCenter , Alignment.bottomCenter vb. gibi hazır parametrelerle belirleyebileceğimiz gibi koordinat düzlemindeki konumunu gösteren x ve y parametrelerini kullanabiliriz.

alignment: Alignment(-0.9,0.9),

Buradaki x ve y parametreleri -1 ve 1 arası bir değer alarak nesnenin düzlemdeki konumunu gösterir. Aşağıdaki şemayı inceleyerek bunu daha iyi anlayabiliriz.

Image for post

Aklıma bir soru geliyor. Ben oluşturduğum Container’ı oluşturduğum yerde ortalamak istersem ne yapabilirim.

Bunun için Container’ı Center diye bir widget’ın içine alsak yeterli olacaktır.

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    debugShowCheckedModeBanner: false,
    home: Scaffold(
      appBar: AppBar(
        title: Text("Brainy Tech"),
        backgroundColor: Colors.blue,
        centerTitle: true,
      ),
      body: Center(
        child: Container(
          color: Colors.amber,
          height: 200,
          width: 200,
          // margin: EdgeInsets.only(left: 5, right: 2, bottom: 3, top: 10),
          // margin: EdgeInsets.all(5),
          // margin: EdgeInsets.symmetric(vertical: 5, horizontal: 10),
          margin: EdgeInsets.fromLTRB(5, 10, 5, 7),
          child: Text(
            "Brainy Tech",
            style: TextStyle(
                color: Colors.black,
                fontSize: 24,
                fontWeight: FontWeight.bold,
                fontStyle: FontStyle.italic),
          ),
          padding: EdgeInsets.all(20),
          alignment: Alignment.center,
        ),
      ),
    ),
  ));
}

Center’ın 4 parametresi vardır. child özelliğine istenilen widget verilir.

Container’ın decoration özelliğini ise başka bir yazımızda ele alacağız.

Bir sonraki yazımızda görüşmek üzere.


What's Your Reaction?

hate hate
0
hate
fail fail
0
fail
fun fun
0
fun
geeky geeky
0
geeky
love love
0
love
lol lol
0
lol
omg omg
0
omg
win win
0
win
Murat Bilginer
21 Şubat 1992 Doğumlu. Endüstri Mühendisi olarak Lisansını 2016 yılında tamamlamıştır. Industryolog Akademi - NGenius oluşumlarının kurucusudur. Şu anda kendi şirketi Brainy Tech ile hem Yazılım Hizmetleri Sunmakta Hem de Online Eğitimler Vermektedir.