์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค!
์ ๋ง ์ค๋๋ง์ Flutter๋ฅผ ๋ค์ ๊ณต๋ถํ๋๋ฐ.. ๋ ์ด์์ ํ๋ ๋ฐฉ๋ฒ์ด iOS์๋ ๋ฌ๋ผ์.. ํท๊ฐ๋ฆฌ๋๋ผ๊ตฌ์.
๊ทธ๋์ ๋ ์ด์์ ํ๋ ๋ฐฉ๋ฒ์ ์ฝ๊ฒ ์ดํดํ๊ธฐ ์ํด์ ๊ธ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค!
๋ฐ๋ก ์์ํ ๊ฒ์~
Column
๋จผ์ ์ปฌ๋ผ ์์ ฏ๋ถํฐ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
์ปฌ๋ผ์ "ํ"์ ๋ปํ์ฃ ? ์ฆ, ์ธ๋ก๋ก ์์ ฏ๋ค์ ๋ฐฐ์นํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ์์ ฏ์ ๋๋ค.
์๋์ ๊ฐ์ด ์๋ฌด๋ฐ ์ต์ ์ ์ฃผ์ง ์์ผ๋ฉด ์ผ์ชฝ ์๋จ์ ๋ฐฐ์น๋๊ฒ ๋ฉ๋๋ค.
Column(children: <Widget>[CircleAvatar(radius: 50.0)])
์ปฌ๋ผ ์์ ์ฌ๋ฌ ๊ฐ์ ์์ ฏ์ ๋ฃ์ผ๋ฉด ์๋์ ๊ฐ์ด ์ธ๋ก๋ก ๋ฐฐ์น๋๊ฒ ๋ฉ๋๋ค.
Column(children: <Widget>[CircleAvatar(radius: 50.0),
CircleAvatar(radius: 50.0),
CircleAvatar(radius: 50.0)])
์์ ฏ๋ค์ด ๋๋ฌด ๋ถ์ด์๋ ๊ฒ ๊ฐ์ฃ ? ์ฌ์ด์ ๊ณต๊ฐ์ ๋๊ณ ์ถ๋ค๋ฉด ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ์.
Column(children: <Widget>[
CircleAvatar(radius: 50.0),
SizedBox(height: 10),
CircleAvatar(radius: 50.0),
SizedBox(height: 10),
CircleAvatar(radius: 50.0)
],
)
1. ์์ ฏ ์ฌ์ด์ SizeBox๋ฅผ ๋ฌ์ ์ฌ๋ฐฑ์ ๋ง๋ ๋ค.
์ด ๋ฐฉ๋ฒ์ ์์ ฏ๋ง๋ค ์ฌ์ด์ฆ๋ฐ์ค๋ฅผ ๋ฌ์ผํ๋ ๋ฒ๊ฑฐ๋กญ๊ณ ๋ณ๋ก ์ถ์ฒํ์ง ์์ต๋๋ค...
2. Column์ Container๋ก ๊ฐ์ธ๊ณ ๊ท ๋ฑํ๊ฒ ๋ฐฐ์นํ๋ค.
์ปฌ๋ผ์ ํน์ ๋์ด๋ฅผ ์ง์ ํ ์ ์์ผ๋ฏ๋ก ์ปจํ ์ด๋๋ก ๊ฐ์ผ ๋ค์ height๋ฅผ ์ง์ ํด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ mainAxisAlignment์ .spaceEvenly(๊ท ๋ฑํ๊ฒ ์ฌ๋ฐฑ์ ์ค)์ ์ง์ ํด ์ค๋๋ค.
Container(
height: 400,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
CircleAvatar(radius: 50.0),
CircleAvatar(radius: 50.0),
CircleAvatar(radius: 50.0)
],
)
Row
๋ก์ฐ ์์ ฏ์ ์ปฌ๋ผ ์์ ฏ๊ณผ ๋ฐ๋๋ก "์ด"์ ๋ปํฉ๋๋ค.
๊ณ ๋ก ์์ ฏ๋ค์ ๊ฐ๋ก๋ก ๋ฐฐ์นํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ์์ ฏ์ ๋๋ค.
Row(children: <Widget>[
CircleAvatar(radius: 50.0),
CircleAvatar(radius: 50.0),
CircleAvatar(radius: 50.0)
]
)
Row์ ์ฌ๋ฐฑ์ ์ฃผ๋ ๋ฐฉ๋ฒ์ ์ปฌ๋ผ๊ณผ ๋์ผํ๋ ์คํตํ๋๋ก ํ๊ฒ ์ต๋๋ค.
MainAxisAlignment
์์์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ ๋ MainAxisAlignment๋ฅผ ์ง์ ํด์ฃผ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด MainAxisAlignment๋ ๋ฌด์์ผ๊น์?
์ด๊ฒ์ ์์ ฏ์ ์ฃผ์ถ์ ์ ํด์ฃผ๋ ๊ฒ์ ๋๋ค.
์ปฌ๋ผ์ ์ฃผ์ถ์ด ์ธ๋ก์ด๊ณ , ์ด์ ์ฃผ์ถ์ด ๊ฐ๋ก์ ๋๋ค.
MainAxisAlignment์ ์ต์ ์ ์ด 6๊ฐ์ง๊ฐ ์์ต๋๋ค.
start,center,end,spaceAround,spaceBetween,spaceEvenly์ด๋ ๊ฒ 6๊ฐ์ง๊ฐ ์๋๋ฐ์.
ํ๋์ฉ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
1. start
.start๋ฅผ ์ง์ ํด์ฃผ๋ฉด ์๋์ ๊ฐ์ด ์ปฌ๋ผ์ ์ฃผ์ถ(์ธ๋ก)์ด 0์ผ๋ก ๋์ด ๊ฐ์ฅ ์์ชฝ์ ๋ฐฐ์น๋๊ฒ ๋ฉ๋๋ค.
2. center
.center๋ฅผ ์ง์ ํด์ฃผ๋ฉด ์๋์ ๊ฐ์ด ์ปฌ๋ผ์ ์ฃผ์ถ(์ธ๋ก)์ด ์ค์์ผ๋ก ๋์ด ๊ฐ์ด๋ฐ์ ๋ฐฐ์น๋๊ฒ ๋ฉ๋๋ค.
3. end
.end๋ฅผ ์ง์ ํด์ฃผ๋ฉด ์๋์ ๊ฐ์ด ์ปฌ๋ผ์ ์ฃผ์ถ(์ธ๋ก)์ด ๋์ผ๋ก ๋์ด ๊ฐ์ฅ ์๋ซ์ชฝ์ ๋ฐฐ์น๋๊ฒ ๋ฉ๋๋ค.
4. spaceAround
์์ ฏ์ด ๊ท ๋ฑํ๊ฒ ๋ฐฐ์น๋๊ณ ์์ ์๋์ ์์ ฏ ๊ฐ์ ๊ฑฐ๋ฆฌ์ ์ ๋ฐ๋งํผ ์ฌ๋ฐฑ์ด ์๊น๋๋ค.
5. spaceEvenly
์์ ฏ์ด ๊ท ๋ฑํ๊ฒ ๋ฐฐ์น๋๊ณ ๊ทธ ์ฌ๋ฐฑ๋งํผ ์์ ์๋์ ์ฌ๋ฐฑ์ด ์๊น๋๋ค.
6. spaceBetween
์์ ฏ์ด ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ๋๊ณ ์์ ์๋์ ์ฌ๋ฐฑ์ด ์๊ธฐ์ง ์์ต๋๋ค.
CrossAxisAlignment
์ด์ MainAxisAlignment์ ๊ต์ฐจ ๋ฐฉํฅ์ธ CrossAxisAlignment๋ฅผ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
CrossAxisAlignment์ ์ต์ ์ ์ด 5๊ฐ์ง๊ฐ ์์ต๋๋ค.
start,center,end,baseline,stretch ์ด๋ ๊ฒ 5๊ฐ์ง๊ฐ ์๋๋ฐ์.
ํ๋์ฉ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
1. start
.start๋ฅผ ์ง์ ํด์ฃผ๋ฉด ์๋์ ๊ฐ์ด ๊ฐ๋ก๊ฐ 0์ด ๋์ด ๊ฐ์ฅ ์ผ์ชฝ์ ๋ฐฐ์น๋๊ฒ ๋ฉ๋๋ค.
2. center
.center๋ฅผ ์ง์ ํด์ฃผ๋ฉด ์๋์ ๊ฐ์ด ๊ฐ๋ก๊ฐ ์ค์์ด ๋์ด ๊ฐ์ด๋ฐ์ ๋ฐฐ์น๋๊ฒ ๋ฉ๋๋ค.
(์ปฌ๋ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก width๊ฐ ๊ฐ์ธ์ฌ์ ธ ์๋ ๊ฐ๋ก๋ก ๋๊ธฐ ๋๋ฌธ์ Container๋ก ๊ฐ๋ก๋ฅผ ๋ฌดํ๋๋ก ๊ฐ์ธ๊ณ ํ์ธํ๊ฒ ์ต๋๋ค.)
Container(
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
CircleAvatar(radius: 50.0),
CircleAvatar(radius: 50.0),
CircleAvatar(radius: 50.0),
],
),
)
3. end
.end๋ฅผ ์ง์ ํด์ฃผ๋ฉด ์๋์ ๊ฐ์ด ๊ฐ๋ก๊ฐ ๋์ด ๋์ด ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์น๋๊ฒ ๋ฉ๋๋ค.
4. stretch
.stretch๋ฅผ ์ง์ ํด์ฃผ๋ฉด ์๋์ ๊ฐ์ด ๊ฐ๋ก๊ฐ ์์๋ถํฐ ๋๊น์ง ํ์ฅ๋์ด .center๋ ๋น์ทํ๊ฒ ๋ณด์ด๋๋ฐ์.
์ปจํ ์ด๋์ ๊ฐ๋ก์ ์ธ๋ก๊ฐ์ ์ง์ ํ๊ณ ํ์ธํด๋ณด๋ฉด ์ปจํ ์ด๋์ ๊ฐ๋ก๊ฐ์ด ๋ฌด์๋ ์ฑ๋ก ํ์ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
Container(
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Container(width: 50,height: 50,color: Colors.amber),
Container(width: 50, height: 50, color: Colors.blueAccent),
Container(width: 50, height: 50, color: Colors.greenAccent)
],
),
)
5. baseline
.baseline์ ์ง์ ํด์ฃผ๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ ์คํธ ๋ฒ ์ด์ค๋ผ์ธ์ด ๋ฐ๋์ ์๊ตฌ๋๋ค๊ณ ์๋ ค์ฃผ๋๋ฐ์.
์๋์ ๊ฐ์ด ๋ฐ๋์ TextBaseline๋ ์ง์ ํด์ค์ผ ํฉ๋๋ค.
Column(
crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: <Widget>[
Text(
"Fomagran ์์ํ",
style: TextStyle(fontSize: 30, color: Colors.white),
),
Text(
"Fomagran ์์ํ",
style: TextStyle(fontSize: 30, color: Colors.white),
),
Text(
"Fomagran ์์ํ",
style: TextStyle(fontSize: 30, color: Colors.white),
),
],
)
์ง์ ํด์ค ๊ธ์์ ๊ธฐ์ค์ ์ ๋ง๊ฒ ๋ฐฐ์น๋ฉ๋๋ค.
TextBaseline
๊ทธ๋ ๋ค๋ฉด TextBaseline์ ๋ฌด์์ผ๊น์?
์๋์ ๊ฐ์ด alphabetic,ideographic ๋๊ฐ์ง ์ต์ ์ด ์กด์ฌํฉ๋๋ค.
1. alphabetic
.alphabetic์ ์์ด์ ์๋ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
2. ideographic
.ideographic์ ์์ด๊ฐ ์๋ ๋ฌธ์์ ์๋ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
Reference
'๐ฑ Cross Platform > Flutter' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Flutter] ํ๋ฌํฐ ์น ๋ฐฐํฌํ๊ธฐ(feat.Fireabse hosting) (3) | 2021.06.12 |
---|---|
[Flutter] ํ๋ฉด ์ด๋ํ๊ธฐ (Navigator Push & Pop) (0) | 2021.06.12 |
[Flutter] ์คํ์์ค ํจํค์ง ์ฌ์ฉํด๋ณด๊ธฐ(Using opensource package) (0) | 2021.04.18 |
[Flutter] StatelessWidget๊ณผ StatefulWidget์ ์ฐจ์ด์ (0) | 2021.04.18 |
[Flutter] ์ด๋ฏธ์ง์ ํฐํธ ์ ์ฉํ๊ธฐ (Image & Font) (0) | 2021.04.11 |
๋๊ธ