λ μ΄μμ μμ ―
β’
Container
β’
Row
β’
Column
β’
Expanded
β’
Stack
β’
Center
β’
Align
β’
SizedBox
β’
Padding
β’
ListView
β’
GridView
β’
Card
Container
1 κ°μ μμ μμ ―μ λ΄μ μ μλ λ°μ€ ννμ μμ ―
λ¬Έλ²
Container(
width: κ°λ‘ ν¬κΈ°
height: μΈλ‘ ν¬κΈ°
color: λ°°κ²½μ
margin: μΈλΆ μ¬λ°±
padding: λ΄λΆ μ¬λ°±
child: μμ μμ ―
decoration: λ°μ€ μ€νμΌ
)
Dart
볡μ¬
μμ± | μ€λͺ
| ν΄λμ€ |
width | 컨ν
μ΄λμ κ°λ‘ ν¬κΈ°λ₯Ό μ€μ ν©λλ€. | double |
height | 컨ν
μ΄λμ μΈλ‘ ν¬κΈ°λ₯Ό μ€μ ν©λλ€. | double |
color | 컨ν
μ΄λμ λ°°κ²½μμ μ§μ ν©λλ€. | Color |
margin | 컨ν
μ΄λμ μΈλΆ μ¬λ°±μ μ€μ ν©λλ€. | EdgeInsets |
padding | 컨ν
μ΄λμ λ΄λΆ μ¬λ°±μ μ€μ ν©λλ€. | EdgeInsets |
child | 컨ν
μ΄λ λ΄μ λ°°μΉλ μμ μμ ―μ μ§μ ν©λλ€. | Widget |
decoration | 컨ν
μ΄λμ μ€νμΌμ μ§μ ν©λλ€. | BoxDecoration |
μμ
Container(
width: 200.0, // κ°λ‘ ν¬κΈ° (μ΅μ
)
height: 100.0, // μΈλ‘ ν¬κΈ° (μ΅μ
)
color: Colors.blue, // λ°°κ²½μ
margin: EdgeInsets.all(16.0), // μΈλΆ μ¬λ°±
padding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 10.0), // λ΄λΆ μ¬λ°±
child: Text('Hello, Container!'), // μμ μμ ―
)
Dart
볡μ¬
Color
νλ¬ν°μμ μμμ νννλ ν΄λμ€
β’
μ μ μμ±μλ₯Ό μ¬μ©νμ¬ μμ μμ±
β’
미리 μ μλ μμ μ¬μ©
μ μ μμ±μλ₯Ό μ¬μ©νμ¬ μμ μμ±
Color myColor = Color.fromRGBO(255, 0, 0, 1.0); // λΉ¨κ°μ
Dart
볡μ¬
미리 μ μλ μμ μ¬μ©
Color myColor = Colors.blue; // νλμ
Dart
볡μ¬
EdgeInsets
νλ¬ν°μμ μ¬λ°±μ λνλ΄λ ν΄λμ€
μ£Όλ‘, Containerμ marginμ΄λ padding μμ±μ μ¬μ©λ©λλ€.
μ’ λ₯
μμ±μ λ° λ©μλ | μ€λͺ
|
EdgeInsets.all(double) | λͺ¨λ λ°©ν₯μ λμΌν μ¬λ°±μ μ§μ ν©λλ€. |
EdgeInsets.fromLTRB(left, top, right, bottom) | μ’, μ, μ°, νμ κ°κ° λ€λ₯Έ μ¬λ°±μ μ§μ ν©λλ€. |
EdgeInsets.symmetric({vertical, horizontal}) | μν, μ’μ° κ°κ° λ€λ₯Έ μ¬λ°±μ μ§μ ν©λλ€. |
EdgeInsets.only({left, top, right, bottom}) | κ° λ°©ν₯λ³λ‘ λ€λ₯Έ μ¬λ°±μ μ§μ ν©λλ€. |
μμ
1.
λͺ¨λ λ°©ν₯μ λμΌν μ¬λ°± μ§μ :
EdgeInsets.all(16.0) // λͺ¨λ λ°©ν₯μ 16.0μ μ¬λ°±
Dart
볡μ¬
2.
μνμ’μ° κ°κ° λ€λ₯Έ μ¬λ°± μ§μ :
EdgeInsets.fromLTRB(10.0, 20.0, 30.0, 40.0) // μ’, μ, μ°, νμ κ°κ° λ€λ₯Έ μ¬λ°±
Dart
볡μ¬
3.
μν, μ’μ° κ°κ° λ€λ₯Έ μ¬λ°± μ§μ :
EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0) // μν, μ’μ° κ°κ° λ€λ₯Έ μ¬λ°±
Dart
볡μ¬
4.
κ° λ°©ν₯λ³λ‘ λ€λ₯Έ μ¬λ°± μ§μ :
EdgeInsets.only(top: 10.0, bottom: 20.0, left: 30.0, right: 40.0) // κ° λ°©ν₯
Dart
볡μ¬
maring, padding μ μ©νκΈ°
Container(
margin: EdgeInsets.all(16.0), // λͺ¨λ λ°©ν₯μ 16.0μ μ¬λ°±
padding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), // μν, μ’μ° κ°κ° λ€λ₯Έ μ¬λ°±
child: Text('Hello, EdgeInsets!'),
)
Dart
볡μ¬
BoxDecoration
μμ λͺ¨μμ μ₯μμ μ§μ νλ ν΄λμ€
Containerμ decoration μμ±μ μ£Όλ‘ μ¬μ©λ©λλ€.
μμ± | μ€λͺ
|
color | μμμ λ°°κ²½μμ μ§μ ν©λλ€. |
border | μμμ ν
λ리(κ²½κ³μ )μ μ§μ ν©λλ€. |
borderRadius | μμμ λͺ¨μ리λ₯Ό λ₯κΈκ² λ§λλλ€. |
boxShadow | μμμ κ·Έλ¦Όμλ₯Ό μΆκ°ν©λλ€. |
gradient | μμμ λ°°κ²½μ κ·ΈλΌλμΈνΈλ₯Ό μΆκ°ν©λλ€. |
image | μμμ λ°°κ²½μ μ΄λ―Έμ§λ₯Ό μΆκ°ν©λλ€. |
1. κΈ°λ³Έ μ¬μ©:
BoxDecoration(
color: Colors.blue, // λ°°κ²½μ
border: Border.all(color: Colors.red, width: 2.0), // κ²½κ³μ
borderRadius: BorderRadius.circular(12.0), // λͺ¨μ리μ λ°κ²½
)
Dart
볡μ¬
2. κ·Έλ¦Όμ μΆκ°:
BoxDecoration(
color: Colors.blue, // λ°°κ²½μ
border: Border.all(color: Colors.red, width: 2.0), // κ²½κ³μ
borderRadius: BorderRadius.circular(12.0), // λͺ¨μ리μ λ°κ²½
boxShadow: [
BoxShadow(
color: Colors.grey,
offset: Offset(2.0, 2.0), // κ·Έλ¦Όμμ μμΉ
blurRadius: 5.0, // κ·Έλ¦Όμμ νλ¦Ό μ λ
),
],
)
Dart
볡μ¬
3. κ·ΈλΌλμΈνΈ μΆκ°:
BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Colors.blue, Colors.red], // κ·ΈλΌλμΈνΈ μμ
),
)
Dart
볡μ¬
4. μ΄λ―Έμ§ λ°°κ²½ μΆκ°:
BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/background.jpg'),
fit: BoxFit.cover,
),
)
Dart
볡μ¬
Row
μ¬λ¬κ°μ§ μμλ₯Ό νλ°©ν₯(κ°λ‘)λ‘ λ°°μΉνλ μμ ―
mainAxisAlignment
μ£ΌμΆ μ λ ¬ λ°©μ
Row μ μ£ΌμΆμ κ°λ‘λ°©ν₯
mainAxisAlignment | ν¨κ³Ό |
start | μμ μ§μ μ κΈ°μ€μΌλ‘ μ λ ¬ |
center | κ°μ΄λ°λ₯Ό κΈ°μ€μΌλ‘ μ λ ¬ |
end | λ μ§μ μ κΈ°μ€μΌλ‘ μ λ ¬ |
spaceBetween | μμκ³Ό λμ μ λ ¬νκ³ , μ€κ°μ λμΌν κ°κ²©μΌλ‘ λΆλ°° |
spaceAround | κ° μμμ μ£Όμμ λμΌν κ°κ²©μΌλ‘ λΆλ°° |
spaceEvenly | λμΌν κ°κ²©μΌλ‘ λͺ¨λ μμμ λΆλ°° |
crossAxisAlignment
κ΅μ°¨μΆ μ λ ¬ λ°©μ
Row μ κ΅μ°¨μΆμ μΈλ‘λ°©ν₯
crossAxisAlignment | ν¨κ³Ό |
start | μμͺ½μ κΈ°μ€μΌλ‘ μ λ ¬ |
center | μ€μμ κΈ°μ€μΌλ‘ μ λ ¬ |
end | μλμͺ½μ κΈ°μ€μΌλ‘ μ λ ¬ |
λ¬Έλ²
Row(
mainAxisAlignment: MainAxisAlignment.start, // κ°λ‘ μ λ ¬ (μ΅μ
)
crossAxisAlignment: CrossAxisAlignment.center, // μΈλ‘ μ λ ¬ (μ΅μ
)
mainAxisSize: MainAxisSize.max, // Rowμ ν¬κΈ° μ§μ (μ΅μ
)
children: <Widget>[
// μμ μμ ―λ€
],
)
Dart
볡μ¬
μμ
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Container(color: Colors.red, width: 50.0, height: 50.0),
Container(color: Colors.blue, width: 50.0, height: 50.0),
Container(color: Colors.green, width: 50.0, height: 50.0),
],
)
Dart
볡μ¬
Column
μ¬λ¬κ°μ§ μμλ₯Ό μ΄λ°©ν₯(μΈλ‘)λ‘ λ°°μΉνλ μμ ―
mainAxisAlignment
μ£ΌμΆ μ λ ¬ λ°©μ
Column μ μ£ΌμΆμ μΈλ‘λ°©ν₯
mainAxisAlignment | ν¨κ³Ό |
start | μμ μ§μ μ κΈ°μ€μΌλ‘ μ λ ¬ |
center | κ°μ΄λ°λ₯Ό κΈ°μ€μΌλ‘ μ λ ¬ |
end | λ μ§μ μ κΈ°μ€μΌλ‘ μ λ ¬ |
spaceBetween | μμκ³Ό λμ μ λ ¬νκ³ , μ€κ°μ λμΌν κ°κ²©μΌλ‘ λΆλ°° |
spaceAround | κ° μμμ μ£Όμμ λμΌν κ°κ²©μΌλ‘ λΆλ°° |
spaceEvenly | λμΌν κ°κ²©μΌλ‘ λͺ¨λ μμμ λΆλ°° |
crossAxisAlignment
κ΅μ°¨μΆ μ λ ¬ λ°©μ
Column μ κ΅μ°¨μΆμ κ°λ‘λ°©ν₯
crossAxisAlignment | ν¨κ³Ό |
start | μ’μΈ‘μ κΈ°μ€μΌλ‘ μ λ ¬ |
center | μ€μμ κΈ°μ€μΌλ‘ μ λ ¬ |
end | μ°μΈ‘μ κΈ°μ€μΌλ‘ μ λ ¬ |
stretch | μμλ€μ μ΅λ ν¬κΈ°λ‘ λλ¦¬κ³ μΈλ‘λ‘ μ λ ¬ |
λ¬Έλ²
Column(
mainAxisAlignment: MainAxisAlignment.start, // μΈλ‘ μ λ ¬ (μ΅μ
)
crossAxisAlignment: CrossAxisAlignment.center, // κ°λ‘ μ λ ¬ (μ΅μ
)
mainAxisSize: MainAxisSize.max, // Columnμ ν¬κΈ° μ§μ (μ΅μ
)
children: <Widget>[
// μμ μμ ―λ€
],
)
Dart
볡μ¬
μμ
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Container(color: Colors.red, width: 50.0, height: 50.0),
Container(color: Colors.blue, width: 50.0, height: 50.0),
Container(color: Colors.green, width: 50.0, height: 50.0),
],
)
Dart
볡μ¬
Expanded
λΆλͺ¨ μμ ―μ λνμ¬, κ°μ§κ³ μλ μ¬μ 곡κ°μ λͺ¨λ μ°¨μ§νλ μμ ―
Expanded μμ ―μ μμ μμ ―μ΄ κ°μ§κ³ μλ μ¬μ 곡κ°μ λͺ¨λ μ°¨μ§νλλ‘ λ§λλ μν μ ν©λλ€. μ£Όλ‘ Row λλ Column λ΄μμ μμ μμ ―μ μ μ©λμ΄ μ¬μ©λ©λλ€.
μμ
Row(
children: [
Container(width: 50, height: 50, color: Colors.red),
Expanded(
child: Container(color: Colors.blue),
),
Container(width: 50, height: 50, color: Colors.green),
],
)
Dart
볡μ¬
μ μμμμ Expandedλ νλμ 컨ν
μ΄λκ° λλ¨Έμ§ κ°λ‘ 곡κ°μ λͺ¨λ μ°¨μ§νλλ‘ ν©λλ€.
Stack
μμ μμ ―λ€μ κ²Ήμ³μ λ°°μΉνλ μμ ―
Stack μμ ―μ μμ μμ ―μ κ²ΉμΉκ² λ°°μΉν λ μ¬μ©λ©λλ€. κ° μμ μμ ―μ μμΉ λ° ν¬κΈ°λ₯Ό μ§μ νμ¬ μμΌ μ μμ΅λλ€.
μμ
Stack(
children: [
Positioned(
top: 10,
left: 10,
child: Container(width: 50, height: 50, color: Colors.red),
),
Positioned(
top: 20,
left: 20,
child: Container(width: 50, height: 50, color: Colors.blue),
),
],
)
Dart
볡μ¬
μ μμμμ Stackμ λΉ¨κ°μκ³Ό νλμ 컨ν
μ΄λλ₯Ό κ²Ήμ³μ νμν©λλ€.
Center
μμ μμ ―μ νλ©΄μ κ°μ΄λ° μ λ ¬νλ μμ ―
Center μμ ―μ μμ μμ ―μ νλ©΄μ κ°μ΄λ°μ μ λ ¬ν©λλ€.
μμ
Center(
child: Container(width: 100, height: 100, color: Colors.green),
)
Dart
볡μ¬
μ μμμμ Centerλ μ΄λ‘μ 컨ν
μ΄λλ₯Ό νλ©΄ κ°μ΄λ°μ μ λ ¬ν©λλ€.
Align
μμ μμ ―μ μ ν΄μ§ μμΉμ λ°°μΉνλ μμ ―
Align μμ ―μ μμ μμ ―μ μ ν΄μ§ μμΉμ λ°°μΉν λ μ¬μ©λ©λλ€. alignment μμ±μ ν΅ν΄ μμΉλ₯Ό μ‘°μ ν μ μμ΅λλ€.
μμ±κ° | μ€λͺ
|
topLeft | μ’μΈ‘ μλ¨ |
topCenter | μλ¨ μ€μ |
topRight | μ°μΈ‘ μλ¨ |
centerLeft | μ’μΈ‘ μ€μ |
center | μ€μ |
centerRight | μ°μΈ‘ μ€μ |
bottomLeft | μ’μΈ‘ νλ¨ |
bottomCenter | νλ¨ μ€μ |
bottomRight | μ°μΈ‘ νλ¨ |
μμ
Align(
alignment: Alignment(0.5, 0.5),
child: Container(width: 50, height: 50, color: Colors.orange),
)
Dart
볡μ¬
μ μμμμ Alignμ μ€λ μ§μ 컨ν
μ΄λλ₯Ό νλ©΄μ κ°λ‘μ μΈλ‘ μ€κ°μ μμΉνλλ‘ ν©λλ€. Alignment ν΄λμ€μ κ°μ μ‘°μ νμ¬ λ€μν μμΉλ‘ μ€μ ν μ μμ΅λλ€.
SizedBox
κ³ μ λ ν¬κΈ°μ 곡κ°μ μμ±νλ λ° μ¬μ©λλ μμ ―
μ£Όλ‘ μ¬λ°±μ λ§λ€κ±°λ μ νν ν¬κΈ°μ μμλ₯Ό λ§λ€μ΄μΌ ν λ μ μ©ν©λλ€. Containerμ λ¬λ¦¬ λ°μ½λ μ΄μ
μμ΄ ν¬κΈ°λ§ μ§μ νλ κ°λ¨ν μμ ―μ
λλ€.
λ¬Έλ²
SizedBox(
width: 100.0, // κ°λ‘ ν¬κΈ° (μ΅μ
)
height: 50.0, // μΈλ‘ ν¬κΈ° (μ΅μ
)
child: YourWidget(), // ν¬κΈ°κ° μ§μ λ μμ ― (μ΅μ
)
)
Dart
볡μ¬
μμ
SizedBox(
width: 200.0,
height: 100.0,
child: Container(
color: Colors.blue,
child: Center(
child: Text('Hello, SizedBox!'),
),
),
)
Dart
볡μ¬
μμ μμ μ½λμμλ SizedBoxλ‘ ν¬κΈ°κ° 200x100μΈ μμλ₯Ό λ§λ€κ³ , κ·Έ μμ Containerλ₯Ό λ£μ΄ νλμμΌλ‘ μ±μ°κ³ κ°μ΄λ°μ ν
μ€νΈλ₯Ό λ°°μΉν μμκ° μμ΅λλ€. widthμ heightλ₯Ό μ¬μ©νμ¬ ν¬κΈ°λ₯Ό μ§μ ν μ μμ΅λλ€.
Padding
μμ μμ ― μ£Όμμ μ¬λ°±μ μΆκ°νλ μμ ―
λ¬Έλ²
Padding(
padding: EdgeInsets.all(16.0), // μ¬λ°±μ ν¬κΈ°λ₯Ό μ§μ (μ΅μ
)
child: YourWidget(), // μ¬λ°±μ΄ μΆκ°λ μμ ― (νμ)
)
Dart
볡μ¬
μμ
Padding(
padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 10.0),
child: Container(
color: Colors.green,
child: Center(
child: Text('Hello, Padding!'),
),
),
)
Dart
볡μ¬
μμ μμ μ½λμμλ PaddingμΌλ‘ μμ§μΌλ‘ 20.0, μνμΌλ‘ 10.0μ μ¬λ°±μ μΆκ°ν ν, κ·Έ μμ Containerλ₯Ό λ£μ΄ μ΄λ‘μμΌλ‘ μ±μ°κ³ κ°μ΄λ°μ ν
μ€νΈλ₯Ό λ°°μΉν μμκ° μμ΅λλ€. padding μμ±μ μ¬μ©νμ¬ μ¬λ°±μ ν¬κΈ°λ₯Ό μ§μ ν μ μμ΅λλ€.
ListView
μ€ν¬λ‘€ κ°λ₯ν μΈλ‘ λͺ©λ‘μ λ§λ€κΈ° μν΄ μ¬μ©λλ μμ ―
ListTile
리μ€νΈ μμ΄ν
μ λνλ΄κΈ° μν΄ μ¬μ©λλ μμ ―
μμ± | μ€λͺ
| νμ
|
leading | μμ΄ν
μ μμ λΆλΆμ μμΉνλ μμ ― | Widget |
title | μμ΄ν
μ μ λͺ©μ λνλ΄λ ν
μ€νΈ μμ ― | Widget |
subtitle | μμ΄ν
μ λΆμ λͺ©μ λνλ΄λ ν
μ€νΈ μμ ― | Widget |
trailing | μμ΄ν
μ λ λΆλΆμ μμΉνλ μμ ― | Widget |
onTap | μμ΄ν
μ΄ νλμμ λ μ€νλλ μ½λ°± ν¨μ | void Function() |
selected | μμ΄ν
μ΄ μ νλμλμ§ μ¬λΆλ₯Ό λνλ΄λ λΆλ¦¬μΈ κ° | bool |
contentPadding | μμ΄ν
μ λ΄μ© μ£Όμμ μ¬λ°±μ μ§μ νλ μμ± | EdgeInsets |
enabled | μμ΄ν
μ΄ νμ±νλμλμ§ μ¬λΆλ₯Ό λνλ΄λ λΆλ¦¬μΈ κ° | bool |
λ¬Έλ²
ListView(
children: <Widget>[
// 리μ€νΈ μμ΄ν
λ€...
],
)
Dart
볡μ¬
μμ±
μμ± | μ€λͺ
| νμ
|
children | ListViewμ ν¬ν¨λ μμ ―λ€μ λͺ©λ‘ | List<Widget> |
padding | λͺ©λ‘ μ£Όμμ μΆκ°λλ μ¬λ°± | EdgeInsets |
shrinkWrap | 리μ€νΈκ° μμ μ 컨ν
μΈ ν¬κΈ°μ λ§κ² μΆμλλμ§ μ¬λΆ | bool |
μμ
ListView(
children: <Widget>[
ListTile(
leading: Icon(Icons.map),
title: Text('Map'),
),
ListTile(
leading: Icon(Icons.photo),
title: Text('Album'),
),
// μΆκ°μ μΈ λ¦¬μ€νΈ μμ΄ν
λ€...
],
)
Dart
볡μ¬
GridView
그리λ ννμ μμ΄ν
λ€μ λνλ΄κΈ° μν μ€ν¬λ‘€ κ°λ₯ν μμ ―
λ¬Έλ²
GridView(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 8.0,
mainAxisSpacing: 8.0,
),
children: <Widget>[
// 그리λ μμ΄ν
λ€...
],
)
Dart
볡μ¬
μμ±
μμ± | μ€λͺ
| νμ
|
gridDelegate | 그리λμ λ μ΄μμ λ° κ°κ²©μ μ μνλ λΈλ¦¬κ²μ΄νΈ | SliverGridDelegate |
children | GridViewμ ν¬ν¨λ μμ ―λ€μ λͺ©λ‘ | List<Widget> |
padding | 그리λ μ£Όμμ μΆκ°λλ μ¬λ°± | EdgeInsets |
shrinkWrap | 그리λκ° μμ μ 컨ν
μΈ ν¬κΈ°μ λ§κ² μΆμλλμ§ μ¬λΆ | bool |
μμ
GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 8.0,
mainAxisSpacing: 8.0,
),
itemCount: 10,
itemBuilder: (BuildContext context, int index) {
return Card(
child: Center(
child: Text('Item $index'),
),
);
},
)
Dart
볡μ¬
Card
Material Design μ€νμΌμ νλ©΄μ κ°μ§κ³ μλ 컨ν
μ΄λ
λ¬Έλ²
Card(
child: // μΉ΄λ λ΄μ©,
)
Dart
볡μ¬
μμ±
μμ± | μ€λͺ
| νμ
|
child | μΉ΄λ λ΄λΆμ νμλλ μμ ― | Widget |
color | μΉ΄λμ λ°°κ²½μ | Color |
elevation | κ·Έλ¦Όμ λμ΄ | double |
shape | μΉ΄λμ λͺ¨μ μ§μ | ShapeBorder |
μμ
Card(
elevation: 4.0,
child: ListTile(
leading: Icon(Icons.album),
title: Text('Title'),
subtitle: Text('Subtitle'),
),
)
Dart
볡μ¬