Hot Reload
์ฝ๋ฉ๊ณผ ๋์์ ํ๋ฉด์ด ๋ณ๊ฒฝ๋๋ ๊ธฐ๋ฅ
stateless ์์ ฏ ์ return์ MaterialApp์ ๋ฃ์ผ๋ฉด ์์๊ฐ์ ์์ ๊ฐ๋ฅํด์ ธ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ์ด ํจ์ฌ ๋นจ๋ผ์ง
Container Widget
์ฌ๊ฐํ์ ์๊ฐ์ ์์๋ฅผ ๋ง๋ค์ด์ค(๋ฐฐ๊ฒฝ, ํ ๋๋ฆฌ, ๊ทธ๋ฆผ์, ํจ๋ฉ, ์ฌ๋ฐฑ, ํ๋ ฌ์ฌ์ฉ ๊ฐ๋ฅ)
Container ์์ ฏ์์๋ children์ด ์์ผ๋ฉด ๋ฌดํ๋๋ก ์ปค์ง๊ฒ๋๋ค.
- alt + enter → wrap with widget
Safe Area
์์ ฏ์ด๋ฆ์ SafeArea๋ฅผ ์ ๋ ฅํ๋ฉด appbar๋ฐ์ ์ปจํ ์ด๋๊ฐ ์๊ธด๋ค.
Margin
- margin ์ปจํ ์ด๋์ ์ฌ๋ฐฑ margin : EdgeInsets.all(20,20) ๋ชจ๋ ์ํ์ข์ฐ์ ์ฌ๋ฐฑ์ 20์ผ๋ก ํจ margin:
- EdgeInsets.symmetric(vertical:50.0,horizontal:10.0) top,bottom์ ๋ํ๋
- EdgeInsets.fromLTRB(30.0,10.0,50.0,20.0) ์์๋๋ก left, top, right, bottom์ ์ฌ๋ฐฑ์ ๋ํ๋
- EdgeInsets.only(left:30.0) ํน์ ํ ๋ช๋ถ๋ถ๋ง ์ฌ๋ฐฑ์ ์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉ(์ฌ๋ฌ๊ฐ๋ ๊ฐ๋ฅ) ์ ํ์ ์ฉ
Column & Row
์ํ์ผ๋ก ๋ฐฐ์น(Row), ์์ง์ผ๋ก ๋ฐฐ์น(column)
- MainAxisAlignment - row, column ์ ๋ ฌ
- MainAxisAlignment : MainAxisSize.min ์ปจํ ์ด๋๊ฐ ๊ฝ์ฐจ๊ฒ ๋ฐฐ์น
- MainAxisAlignment : MainAxisSize.start ์ปจํ ์ด๋๊ฐ ์ผ์ชฝ์๋ถ์ ์์น
- MainAxisAlignment : MainAxisSize.end ์ผ์ชฝ ํ๋ถ์ ์์น
- MainAxisAlignment : MainAxisSize.center ์ผ์ชฝ ์ค์์ ์์น
- MainAxisAlignment : MainAxisSize.spaceEvenly ์ปจํ ์ด๋๊ฐ์ ๊ฐ๊ฒฉ์ด ๊ณ ๋ฅด๊ฒ ์์นํจ
crossAxisAlignment : CrossAxisAlignment.end → ์ปจํ ์ด๋ ์ค ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ๊ฒ์ ๋์ ๋ง์ถค
crossAxisAlignment : CrossAxisAlignment.end → ์ปจํ ์ด๋ ์ค ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ๊ฒ์ ๋์ ๋ง์ถค
* ctrl + q : ์ธ ์ ์๋ child๋ฅผ ์๊ฐ
ํฐํธ ๋ฐ๊พธ๊ธฐ
https://flutter.io/custom-fonts/#from-packages ์ฐธ๊ณ
fonts.google.com ์์ ํฐํธ ๋ค์ด
์์ ์ ํฐํธ ๋ค์ด : https://noonnu.cc/about
directory ์๋ก ๋ง๋ค์ด์ ํฐํธ ๊ทธ ํด๋์ ์ฝ์ pubspec.yaml์
//pubspec.yaml
fonts:
-family: Pacifico
fonts:
- assets : fonts/Pacifico-Regulat.ttf
//main.dart
Text('Minjoo Park', style : TextStyle(
fontFamily : 'Pacifico',
fontSize : 40.0,
color : Colors.white,
fontWeight : FontWeight.bold,
),
),
๋ฉ์ธํจ์์ ๊ฐ์ Text์์ style: TextStyle(fontfamily: 'Pacifico')
์ด๋ฏธ์ง ์ฝ์
// before
image: AssetImage('images/urbanbrush-20190125013748099992.png')
//After
child: Image.asset('images/dice1.png')
Icon Class
Icon(Icons.add_shopping_cart) //์ผํ์นดํธ ๋ชจ์ ์์ด์ฝ ๋ฃ๊ธฐ
์์ ฏ์ ์ผํฐ๋ก ๋ณด๋ด๋ ๋ฐฉ๋ฒ
Sol 1) Center(
child : Row( ....
Sol 2) Row์ ์ปค์๋ฅผ ๋๊ณ Flutter Online - Center Widget ํด๋ฆญ
Random Number
$leftDiceNumber ⇒ String Interpolation(๋ฌธ์์ด ๋ณด๊ฐ)
์ฝ๋ ์๋จ์ import 'dart:math' ์ ๋ ฅ
leftDiceNumber = Random().nextint(int max)//์ฌ๊ธฐ์ max๋ ๋ฒ์์ ํฌํจํ์ง ์์.
//1~6๊น์ง์ ๋๋ค์ซ์๋ฅผ ํ์
Random().nextint(int 6) + 1;
Dart : Statically Typed Language
Variable - Type Safe Language
Data Type
- String
- bool-True, False
๋ณ์์ ์ธ
var ____; //dynamic์ผ๋ก ์ฌ์ฉ
dynamic c = _____; //์๋ฌด๊ฑฐ๋ ๋ณ์๋ก ์ฌ์ฉ๊ฐ๋ฅ
๋คํธ๋ statically typed language์ด์ง๋ง, dynamic์ผ๋ก ์ฌ์ฉํ๋ฉด ๋์ ์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅ
Stateful/Stateless
stateless๋ ์ํ๋ฅผ ๊ฐ์ง์ง ์์, ๋ณํ์ง ์์ ์๋ฅผ ๋ค๋ฉด ๋ฐ๋ฌผ๊ด ๊ฐ์๊ฑฐ๋ฅผ ์๊ฐํด ๋ณด์๋ฉด ๋ฐ๋ฌผ๊ด์ ๊ฐ๋ฉด ๊ฐ์ ์๋ฆฌ์ ์ํ๋ค์ด ์๊ณ ๊ทธ ์ํ์ ๋ง์ ธ์๋ ์๋๊ณ ๋ณด๊ธฐ๋ง ํด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ์ํ๋ค์ ํญ์ ๊ทธ์๋ฆฌ์ ์์นํ๊ณ ์์ด์ผ ํ๋ค. ์ด๋ฐ ์ํฉ์ ์ฐ์ด๋๊ฒ Stateless Widget stateful๋ ์ํ๋ฅผ ๊ฐ์ง, ๋ณํ ์ ์์ ⇒ stful(shortcut) setState()๋ ์์ ๋ณ๋๋ ์ฌํญ์ผ๋ก hot reload ํ์ ๋, ์ฌ๋น๋ํ ์ ์๋๋ก ํจ - data has changed stateless ์์ ฏ์ ๊ทธ๋ฅ extends ํด์ ์ฌ์ฉํ๋ฉด ๋์ง๋ง stateful ์์ ฏ์ ์์๋ ๋ฐ๊ณ ๋ณ์์ ํ ๋น๋ ๊ฐ์ ๋ฐ๊ฟ์ค๋ค๊ฑฐ๋ ์ด๋ฏธ์ง๊ฐ ๋ฐ๋๋ค๋๊ฐ ๋ฑ ์ ์ํ๋ฅผ ๋ฐ๊ฟ์ค ์์ค๋ค์ setState ๋ฉ์๋ ์์ ๋ฃ์ด์ค์ผํจ
'APP > FLUTTER' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Flutter #3] Xylophone & Quizzler (0) | 2021.01.05 |
---|---|
FLUTTER #4 BMI Calculator (0) | 2020.01.19 |
FLUTTER #1 I_am_rich (0) | 2020.01.18 |