Container
๐ฌ child๋ฅผ ํฌํจํ ๋ถ๋ชจ ์์ ฏ์ผ๋ก ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
๐ฌ width, height๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ์ต๋ ํฌ๊ธฐ๋ก ํ์ฅํ๋ค.
๐ฌ ๋ฐฐ๊ฒฝ ์์์ ์ค์ ํ ์ ์๋ค.
์์
Container(
color: Colors.red,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
)

SizedBox
๐ฌ ์ฌ๋ฐฑ์ ์ฃผ๊ธฐ ์ํ ๋จ์ ์ฉ๋๋ก ์ฌ์ฉํ๊ธฐ๋ ํ๋ฉฐ, Container์ฒ๋ผ child๋ฅผ ํฌํจํ ๋ถ๋ชจ ์์ ฏ์ผ๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
๐ฌ width, height๊ฐ ์ค์ ๋์ง ์์ผ๋ฉด child์ ํฌ๊ธฐ์ ๋ง๊ฒ ํฌ๊ธฐ๊ฐ ์ค์ ๋๋ค.
์์
SizedBox(
width: 100,
height: 100,
child: Container(
color: Colors.red,
),
),

Column
๐ฌ ์์ง ๋ฐฉํฅ์ผ๋ก ์์ ฏ๋ค์ ๋๋ํ ๋ฐฐ์นํ๋ ์์ ฏ
Column(
children: <Widget>[
[์์ ฏ],
[์์ ฏ],
[์์ ฏ],
],
),
์์
Column(
children: <Widget>[
Container(
color: Colors.red,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
),
Container(
color: Colors.green,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
),
Container(
color: Colors.blue,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
),
],
),

Row
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
[์์ ฏ],
[์์ ฏ],
[์์ ฏ],
],
),
๐ฌ mainAxis๋ ์์ ฏ์ ๊ธฐ๋ณธ ๋ฐฉํฅ์ด๋ฉฐ, Row๋ ์ค๋ฅธ์ชฝ, Column์ ์๋์ชฝ์ด mainAxis๊ฐ ๋๋ค.
๐ฌ crossAxis๋ ๊ธฐ๋ณธ ๋ฐฉํฅ์ ๋ฐ๋ ๋ฐฉํฅ์ ๋ํ๋ด๋ฉฐ, Row๋ ์๋์ชฝ, Column์ ์ค๋ฅธ์ชฝ์ด ๋๋ค.
๐ฌ ๊ฐ ํ๋กํผํฐ์ ์ง์ ํ ์ ์๋ ์์๋ ์๋์ ๊ฐ๋ค.
์์
Row (
mainAxisSize: MainAxisSize.max, // ๊ฐ๋ก๋ก ๊ฝ ์ฑ์ฐ๊ธฐ
mainAxisAlignment: MainAxisAlignment.center, // ๊ฐ๋ก ๋ฐฉํฅ์ผ๋ก ๊ฐ์ด๋ฐ ์ ๋ ฌํ๊ธฐ
crossAxisAlignment: CrossAxisAlignment.center, // ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ๊ฐ์ด๋ฐ ์ ๋ ฌํ๊ธฐ
children: <Widget>[
Container(
color: Colors.red,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
),
Container(
color: Colors.green,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
),
Container(
color: Colors.blue,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
)
],
)

Stack
๐ฌ children์ ๋์ดํ ์ฌ๋ฌ ์์ ฏ์ ์์๋๋ก ๊ฒน์น๊ฒ ํ๋ค.
๐ฌ ์ฌ์ฉ ๋ฐฉ๋ฒ์ Row, Column๊ณผ ๊ฐ์ผ๋ฉฐ ์์๋ children ํ๋กํผํฐ์ ์ ์ํ ๋ฆฌ์คํธ์ ๋จผ์ ์์ฑํ ์์ ฏ์ด ๊ฐ์ฅ ์๋์ชฝ์ ์์นํ๊ณ ๋์ค์ ์์ฑํ ์์ ฏ์ด ์์ชฝ์ ์์นํ๋ค.
์์
Stack (
children: <Widget>[
Container(
color: Colors.red,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
),
Container(
color: Colors.green,
width: 80,
height: 80,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
),
Container(
color: Colors.blue,
width: 60,
height: 60,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
)
],
)

GridView
๐ฌ ์ด ์๋ฅผ ์ง์ ํ์ฌ ๊ทธ๋ฆฌ๋ ํํ๋ก ํ์ํ๋ ์์ ฏ์ด๋ค.
๐ฌ GridView.count() ์์ฑ์๋ ๊ฐ๋จํ๊ฒ ๊ทธ๋ฆฌ๋๋ฅผ ์์ฑํ๊ฒ ํด์ค๋ค.
๐ฌ crossAxisCount ํ๋กํผํฐ์ ์ด ์๋ฅผ ์ง์ ํ ์ ์๋ค.
GridView.count(
crossAxisCount: [์ด ์],
children: <Widget>[
[์์ ฏ],
[์์ ฏ],
[์์ ฏ],
],
),
์์
GridView.count(
crossAxisCount: 2, // ์ด ์
children: <Widget>[
Container(
color: Colors.red,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
),
Container(
color: Colors.green,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
),
Container(
color: Colors.blue,
width: 100,
height: 100,
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
),
],
),

PageView
๐ฌ ์ฌ๋ฌ ํ์ด์ง๋ฅผ ์ข์ฐ๋ก ์ฌ๋ผ์ด๋ํ์ฌ ๋๊ธธ ์ ์๋๋ก ํด์ฃผ๋ ์์ ฏ์ด๋ค.
๐ฌ children ํ๋กํผํฐ์ ๊ฐ ํ๋ฉด์ ํํํ ์์ ฏ์ ์ฌ๋ฌ ๊ฐ ์ค๋นํ์ฌ ์ง์ ํ๋ฉด ํ๋ฉด์ ์ข์ฐ๋ก ์ฌ๋ผ์ด๋ํ ์ ์๋ค.
๐ฌ ํ์ง๋ง, Tab๊ณผ ์ฐ๋ํ์ฌ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ข์ฐ๋ก ์ฌ๋ผ์ด๋๊ฐ ๊ฐ๋ฅํ์ง ์ฌ์ฉ์๊ฐ ๋ชจ๋ฅผ ์ ์์ด์ ๋จ๋ ์ผ๋ก๋ ์ ์ฌ์ฉํ์ง ์๋๋ค.
PageView(
children: <Widget>[
[์์ ฏ],
[์์ ฏ],
[์์ ฏ],
],
),
์์
PageView(
children: <Widget>[
Container(
color: Colors.red,
),
Container(
color: Colors.green,
),
Container(
color: Colors.blue,
),
],
),

Center
๐ฌ ์ค์์ผ๋ก ์ ๋ ฌ์ํค๋ ์์ ฏ์ด๋ค.
๐ฌ child ํ๋กํผํฐ์ ์ค์์ ๋ฐฐ์นํ ์์ ฏ์ ์ค์ ํ๋ค.
Center(
child: [์์ ฏ],
),
์์
Center(
child: Container(
color: Colors.red,
width: 100,
height: 100,
),
),

Padding
๐ฌ ์์ชฝ ์ฌ๋ฐฑ์ ํํํ ๋ ์ฌ์ฉํ๋ ์์ ฏ์ผ๋ก, ์์ชฝ ์ฌ๋ฐฑ์ padding ํ๋กํผํฐ์ ๊ฐ์ ์ง์ ํ๋ค.
๐ฌ EdgeInsets ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํ๋ฉฐ const๋ฅผ ๋ถ์ด๋ฉด ์ปดํ์ผ ํ์์ ์์๋ก ์ ์๋์ด ๋ค์ ์ฌ์ฉ๋๋ ๋ถ๋ถ์ด ์์ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฐ์ ์ฌ์ฌ์ฉํ๋ ์ด๋์ด ์๋ค.
Padding(
padding: const EdgeInsets.all(40.0),
child: [์์ ฏ],
),
โป๏ธ ๋จ, ๋ฌ๋ผ์ง๋ ๊ฐ์ด ๋ถ์ฌํ๊ณ ์ถ๋ค๋ฉด, const๋ฅผ ์ญ์ ํด์ผ ํ๋ค.
EdgeInsets.all([double])
โป๏ธ all() ํจ์๋ ๋ค ๋ฐฉํฅ ๋ชจ๋ ๊ฐ์ ๊ฐ์ ์ง์ ํ๋ค.
EdgeInsets.only({left: [์ผ์ชฝ], top: [์], right: [์ค๋ฅธ์ชฝ], bottom: [์๋]})
โป๏ธ only() ํจ์๋ ์ํ๋ ๋ฐฉํฅ์ ๊ฐ์ ์ง์ ํ๋ค.
โป๏ธ ์ง์ ํ์ง ์์ ๋ฐฉํฅ์๋ ๊ธฐ๋ณธ๊ฐ 0.0์ด ์ง์ ๋๋ค.
EdgeInsets.fromLTRB([์ผ์ชฝ], [์], [์ค๋ฅธ์ชฝ], [์๋])
โป๏ธ fromLTRB() ํจ์๋ ๋ค ๋ฐฉํฅ์ ๊ฐ์ ๊ฐ๊ฐ ์ง์ ํ๋ค.
์์
Padding(
padding: const EdgeInsets.all(40.0),
child: Container(
color: Colors.red,
),
),

Align
๐ฌ ์์ ์์ ฏ์ ์ ๋ ฌ ๋ฐฉํฅ์ ์ ํ ์ ์๋ ์์ ฏ์ด๋ค.
๐ฌ ์์ ์์ ฏ์ ์ ๋ ฌํ๊ธฐ ์ํด์๋ alignment ํ๋กํผํฐ์ ์ ๋ ฌํ๊ณ ์ ํ๋ ๋ฐฉํฅ์ ์ ์ํด์ผ ํ๋ค.
Align(
alignment: Alignment.bottomRight,
child: [์์ ฏ],
),
๐ฌ Alignment ํด๋์ค์ ์ ์๋์ด ์๋ ์ ๋ ฌ ๊ด๋ จ ์์๋ค
์์
Align(
alignment: Alignment.bottomRight,
child: Container(
color: Colors.red,
width: 100,
height: 100,
),
),

Expanded
๐ฌ ์์ ์์ ฏ์ ํฌ๊ธฐ๋ฅผ ์ต๋ํ์ผ๋ก ํ์ฅ์์ผ์ฃผ๋ ์์ ฏ์ด๋ค.
๐ฌ ์ฌ๋ฌ ์์ ฏ์ ๋์์ ์ ์ฉํ๋ฉด flex ํ๋กํผํฐ์ ์ ์ซ๊ฐ์ ์ง์ ํ์ฌ ๋น์จ์ ์ ํ ์ ์์ผ๋ฉฐ, ๊ธฐ๋ณธ๊ฐ์ 1์ด๋ค.
Column(
children: <Widget>[
Expanded(
flex: [๋น์จ], // ๊ธฐ๋ณธ๊ฐ์ 1
child: [์์ ฏ],
),
Expanded(
child: [์์ ฏ],
),
Expanded(
child: [์์ ฏ],
),
],
),
์์
Column(
children: <Widget>[
Expanded(
flex: 2,
child: Container(
color: Colors.red,
),
),
Expanded(
child: Container(
color: Colors.green,
),
),
Expanded(
child: Container(
color: Colors.blue,
),
),
],
),

Card
๐ฌ ์นด๋ ํํ์ ๋ชจ์์ ์ ๊ณตํ๋ ์์ ฏ์ด๋ค.
๐ฌ ๊ธฐ๋ณธ์ผ๋ก ํฌ๊ธฐ๊ฐ 0์ด๋ฏ๋ก ์์ ์์ ฏ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ค.
Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16.0),
),
elevation: [์ค์ซ๊ฐ], // ๊ทธ๋ฆผ์ ๊น์ด
child: [์์ ฏ],
),
โป๏ธ elevation ํ๋กํผํฐ๋ฅผ ์ง์ ํ์ฌ ๊ทธ๋ฆผ์์ ๊น์ด๋ฅผ ์กฐ์ ํ ์ ์๋ค.
โป๏ธ shape ํ๋กํผํฐ๋ ์นด๋ ๋ชจ์์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ฉฐ, ์ฌ๊ธฐ์๋ RoundedRectangleBorder ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ง์ ํ๋ค.
โป๏ธ borderRadius ํ๋กํผํฐ์ BorderRadius.circular() ๋ฉ์๋๋ฅผ ์ง์ ํ์ฌ ์นด๋ ๋ชจ์๋ฆฌ์ ๋ฅ๊ทผ ์ ๋๋ฅผ ์ค์ซ๊ฐ์ผ๋ก ์กฐ์ ํ๋ค. ๊ฐ์ด ํด์๋ก ๋ ๋ฅ๊ธ๊ฒ ๋๋ค.
์์
Center(
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16.0),
),
elevation: 4.0, // ๊ทธ๋ฆผ์ ๊น์ด
child: Container(
width: 200,
height: 200,
),
),
),

Flexible
๐ฌ ๊ฐ ์์ ฏ์ด ์์ฌ ๊ณต๊ฐ์ ๋ฐ๋ผ ์ ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๊ฒ ํ ์ ์๋ค.
๐ฌ flex ํ๋กํผํฐ๋ฅผ ํตํด Flexible ๊ฐ์ ๋น์จ์ ์กฐ์ ํ ์ ์๋ค.
๐ฌ ๋จ์ ๊ณต๊ฐ์ ์ต๋๋ก ํ์ฅ๋๊ธฐ๋ฅผ ์ํ๋ ๊ฒฝ์ฐ Flexible์ fit ์ธ์๋ฅผ FlexFit.tight๋ก ์ค์ ํ๊ฑฐ๋ Expanded๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
Column(
children: [
Flexible(
flex: 2,
child: Container(
color: Colors.orangeAccent,
),
),
Flexible(
flex: 3,
child: Container(
color: Colors.lightBlueAccent,
),
),
Flexible(
flex: 1,
child: Container(
color: Colors.blueAccent,
),
),
],
),
FittedBox
๐ฌ ์์ ์์ ฏ์ด ๋ถ๋ชจ ์์ ฏ์ ์ฌ์ด์ฆ์ ๊ฝ ์ฐจ๋๋ก ๋ฐฐ์นํ๋ค.
Container(
color: Colors.blue,
width: 300,
height: 300,
child: FittedBox(
child: Center(
child: Text(
"FittedBox",
style: TextStyle(
color: Colors.white,
fontSize: 20,
),
),
),
),
),
Visibility
๐ฌ ์์ ฏ์ ํ์ฑ/๋นํ์ฑ ์ฌ๋ถ๋ฅผ ์ ์ดํ ์ ์๋ค.
Visibility(
visible: bool,
child: Widget
),
Opacity
Opacity(
child: _image,
opacity: 0.3,
),
๐ฌ ์์ ฏ์ ํฌ๋ช ๋๋ฅผ ์ค ๋ ์ฌ์ฉํ๋ค.
PlaceHolder
๐ฌ ๋์ค์ ์์ ฏ์ด ๋ค์ด๊ฐ ๊ณต๊ฐ์ ์์๋ก ๋จ๊ฒจ๋๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
Placeholder(
fallbackWidth: 100,
fallbackHeight: 100,
),
FractionallySizedBox
๐ฌ ๋ถ๋ชจ ์์ ฏ์ ์๋์ ์ธ ํฌ๊ธฐ๋ก ์์ ์์ ฏ ํฌ๊ธฐ๋ฅผ ์ง์ ํ ์ ์๋ค.
Container(
width: 200.0,
height: 200.0,
color: const Color.fromARGB(255, 235, 237, 237),
child: FractionallySizedBox(
widthFactor: 0.5,
heightFactor: 0.25,
child: ElevatedButton(
onPressed: () { },
child: const Text('Button'),
),
),
),
'Flutter > Concept' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Flutter ] ์ฟ ํผํฐ๋ ธ ๋์์ธ (0) | 2021.12.29 |
---|---|
[ Flutter ] ์ ๋๋ฉ์ด์ (0) | 2021.12.29 |
[ Flutter ] ๋ค์ด์ผ๋ก๊ทธ (0) | 2021.12.29 |
[ Flutter ] ๋ฒํผ (0) | 2021.12.28 |
[ Flutter ] ์ด๊ธฐ ์ค์ (0) | 2021.12.20 |