Flutter: Herkesin Bilmesi Gereken Temel Layout Kuralları! - SiberMega - Basit Yazılım ve Tasarım Eğitimleri

Popüler Yazılar

Post Top Ad

Responsive Ads Here

Post Top Ad

Responsive Ads Here

28/01/2023

Flutter: Herkesin Bilmesi Gereken Temel Layout Kuralları!

 

Flutter: Herkesin Bilmesi Gereken Temel Layout Kuralları

👉 Kısıtlamalar aşağı, boyutlar yukarı akar. Pozisyonu parent belirler.

Column Widget’ımız ile çocukları (children) ve parent’ı arasında şu şekilde bir iletişim gerçekleşir:

Widget: Hey parent, kısıtlamalarım neler?

Parent: Genişliğin 90 ve 300 piksel aralığında, uzunluğun ise 30 ve 85 piksel aralığında olmalı

Widget: Hmm, bana 5 piksel padding gerekiyor. Bu durumda çocuklarımın yerleşeceği alan en fazla 295 piksel genişlik, 75 piksel yükseklikte olabilir.

Widget: Hey ilk çocuğum (mor kutu-first child), sen 0-290 genişlik ve 0-75 yükseklik aralığında olmalısın.

İlk Çocuk: Peki, öyleyse 290 piksel genişlik ve 20 piksek yükseklikte olmak isterim.

Widget: Hm, ikinci çocuğumu ilkinin altına, sütun olarak yerleştirmeliyim. Bu durumda ikinci çocuğuma sadece 55 piksek yükseklikte alan kalıyor.

Widget: Hey ikinci çocuk (yeşil kutu), sen 0-290 genişlik ve 0-55 yükseklik aralığında olmalısın.

İkinci Çocuk: 140 piksel genişlik ve 30 piksek yükseklikte olmak isterim.

Widget: Çok güzel, bu durumda pozisyon olarak da ilk çocuğum x:5, y:5 posizyonunda yerleşebilir. İkinci çocuğum ise x:80, y:25 pozisyonuna yerleşebilir.

Tüm bu iletişim ve hesaplardan sonra Column Widget’ımız bu kez kendi parent Widget’ına dönerek ihtiyacı olan alanı bildirir.

Widget: Hey parent, benim 300 piksel genişlik ve 60 piksel yüksekliğe ihtiyacım var.

Limitler

Örnekler:

Örnek 1

Container(color:Colors.red)

Örnek 2

Container(width: 100, height: 100, color: Colors.red)

Örnek 3

Center(
child: Container(width: 100, height: 100, color: Colors.red)
)

Örnek 4

Align(
alignment: Alignment.bottomRight,
child: Container(width: 100, height: 100, color: Colors.red),
)

Örnek 5

Center(
child: Container(
color: Colors.red,
width: double.infinity,
height: double.infinity,
)
)

Örnek 6

Center(child: Container(color: Colors.red))

Örnek 7

Center(
child: Container(
color: Colors.red,
child: Container(color: Colors.green, width: 30, height: 30),
)
)

Örnek 8

Center(
child: Container(
color: Colors.red,
padding: const EdgeInsets.all(20.0),
child: Container(color: Colors.green, width: 30, height: 30),
)
)

Örnek 9

ConstrainedBox(
constraints: BoxConstraints(
minWidth: 70,
minHeight: 70,
maxWidth: 150,
maxHeight: 150,
),
child: Container(color: Colors.red, width: 10, height: 10),
)

Örnek 10

Center(
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: 70,
minHeight: 70,
maxWidth: 150,
maxHeight: 150,
),
child: Container(color: Colors.red, width: 10, height: 10),
)
)

Örnek 11

Center(
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: 70,
minHeight: 70,
maxWidth: 150,
maxHeight: 150,
),
child: Container(color: Colors.red, width: 1000, height: 1000),
)
)

Örnek 12

Center(
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: 70,
minHeight: 70,
maxWidth: 150,
maxHeight: 150,
),
child: Container(color: Colors.red, width: 100, height: 100),
)
)

Örnek 13

UnconstrainedBox(
child: Container(color: Colors.red, width: 20, height: 50),
)

Örnek 14

UnconstrainedBox(
child: Container(color: Colors.red, width: 4000, height: 50),
);

Örnek 15

OverflowBox(
minWidth: 0.0,
minHeight: 0.0,
maxWidth: double.infinity,
maxHeight: double.infinity,
child: Container(color: Colors.red, width: 4000, height: 50),
);

Örnek 16

UnconstrainedBox(
child: Container(
color: Colors.red,
width: double.infinity,
height: 100,
)
)

Örnek 17

UnconstrainedBox(
child: LimitedBox(
maxWidth: 100,
child: Container(
color: Colors.red,
width: double.infinity,
height: 100,
)
)
)

Örnek 18

FittedBox(
child: Text('Some Example Text.'),
)

Örnek 19

Center(
child: FittedBox(
child: Text('Some Example Text.'),
)
)

Örnek 20

Center(
child: FittedBox(
child: Text('This is some very very very large text that is too big to fit a regular screen in a single line.'),
)
)

Örnek 21

Center(
child: Text('This is some very very very large text that is too big to fit a regular screen in a single line.'),
)

Örnek 22

FittedBox(
child: Container(
height: 20.0,
width: double.infinity,
)
)

Örnek 23

Row(
children:[
Container(color: Colors.red, child: Text('Hello!')),
Container(color: Colors.green, child: Text('Goodbye!)),
]
)

Örnek 24

Row(
children:[
Container(color: Colors.red, child: Text('This is a very long text that won’t fit the line.')),
Container(color: Colors.green, child: Text('Goodbye!')),
]
)

Örnek 25

Row(
children:[
Expanded(
child: Container(color: Colors.red, child: Text('This is a very long text that won’t fit the line.'))
),
Container(color: Colors.green, child: Text('Goodbye!')),
]
)

Örnek 26

Row(
children:[
Expanded(
child: Container(color: Colors.red, child: Text(‘This is a very long text that won’t fit the line.’)),
),
Expanded(
child: Container(color: Colors.green, child: Text(‘Goodbye!’),
),
]
)

Örnek 27

Row(children:[
Flexible(
child: Container(color: Colors.red, child: Text('This is a very long text that won’t fit the line.'))),
Flexible(
child: Container(color: Colors.green, child: Text(‘Goodbye!’))),
]
)

Örnek 28

Scaffold(
body: Container(
color: blue,
child: Column(
children: [
Text('Hello!'),
Text('Goodbye!'),
]
)))

Örnek 29

Scaffold(
body: SizedBox.expand(
child: Container(
color: blue,
child: Column(
children: [
Text('Hello!'),
Text('Goodbye!'),
],
))))

Sıkı x Gevşek / Kısıtlamalar

BoxConstraints.tight(Size size)
: minWidth = size.width,
maxWidth = size.width,
minHeight = size.height,
maxHeight = size.height;
BoxConstraints.loose(Size size)
: minWidth = 0.0,
maxWidth = size.width,
minHeight = 0.0,
maxHeight = size.height;

Belirli widgetlar için layout kurallarını öğrenmek

Hiç yorum yok:

Yorum Gönder

Görüş ve Düşüncelerinizi Bizimle Paylaşmayı Unutmayın.

Post Top Ad

Responsive Ads Here