# Flutter๋?
# What is Flutter?
Mobile World Congress 2018์์ Flutter์ ์ต์ด ๋ฒ ํ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ฐํํ์๊ณ Google์์ ์๋กญ๊ฒ ์ ๋ณด์ด๋ ๋ชจ๋ฐ์ผ UI ํ๋ ์์ํฌ์ด๋ฉฐ, ๊ฐ๋ฐ์๊ฐ iOS์ Android ๋ชจ๋๋ฅผ ์ํ ๊ณ ํ์ง ๊ธฐ๋ณธ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๋ ๋ฐ ๋์์ ์ฃผ๋ ํฌ๋ก์ค ํ๋ซํผ ํ๋ ์์ํฌ ์ ๋๋ค.
- [x] IOS
- [x] Android
- [x] Any Web App
Dart ์ธ์ด๋ก ๋ชจ๋ ๊ตฌํ ๊ฐ๋ฅ
# Dart๋?
Dart๋ ๊ตฌ๊ธ์์ ๋ง๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก Flutter๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋์ต๋๋ค.
Dart๋ ๊ตฌ๊ธ์ด server side
๋ฐ front-end
์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ Javascript
๋ณด๋ค ๋ ๋์ ์ธ์ด๋ฅผ ์ํ๊ธฐ์ ๋ง๋ค์ด ์ก์ต๋๋ค.
์ ๊ฐ ์๊ธฐ๋ก๋, ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์น์ธ์ ์ํ ๊ฑฐ๋ ์์ํ์ ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์ฌ๋ฌ ๋ธ๋ผ์ฐ์ ๊ณต๊ธ์ ์ฒด์ ์์กดํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๊ธฐ๋ฅ ์ ๋ฐ์ดํธ๊ฐ ๋๋ฆฌ๋ค๋ ๊ฒ์ ๋๋ค.
๊ตฌ๊ธ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ ์ฌ์ฉํ ์ง ๋ง์ง์ ๋ํ ์ผ๋ จ์ ๊ฒฐ์ ํ์ ์๋ฏธ์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ง๋ ์ธ์ด๋ฅผ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋ค์ ๋งํ์๋ฉด Dart์์ ์์ฑ๋๋ ๋ชจ๋ ๊ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ ํ ์ ์์ผ๋ฉฐ ์ด๊ฒ์ด ๊ตฌ๊ธ์ด Java
๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์๋ก์ด ์ธ์ด๋ฅผ ๊ฐ๋ฐํ ์ด์ ์
๋๋ค.
ํ์ง๋ง ์ข์ ์์์ด ์์ต๋๋ค. ๋คํธ๋ safe
์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋ ๋ฐ ํ์ํฉ๋๋ค. ๊ตฌ๊ธ์ Dart๋ก ์ด๋ค ํ์ ์ ์ธ๊ฒ์ ๋ง๋ค๊ธฐ ์ํด ์์ํ์ง ์์์ต๋๋ค. ๊ทธ๋ค์ ๋จ์ํ๊ณ ์์ฐ์ ์ด๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ ๋ ์ ์๋ ์ธ์ด๋ฅผ ๋ง๋ค๊ณ ์ ํ์ต๋๋ค.
๊ตฌ๋ฌธ์๋ ํน๋ณํ ํฅ๋ฏธ๋ก์ด๊ฒ๋ ์์ผ๋ฉฐ ์ฌ๋ฌ๋ถ์ ํผ๋์ค๋ฝ๊ฒ ํ ํน๋ณํ ์ฐ์ฐ์๋ ์์ต๋๋ค.
Dart(์๋ฐ์คํฌ๋ฆฝํธ์๋ ๋ฌ๋ฆฌ)์๋ true
์ false
๋ฅผ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก๋ง ํํํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ค์์ true๋ก ์ธ์๋ฉ๋๋ค.
if (3) { ... }
๋คํธ์์ ์ ์ฒ๋ผ ํ๋ฉด ํ๋ก๊ทธ๋จ์ด ์๋ง์ด ๋ ๊ฒ์
๋๋ค.
๋คํธ์ ํต์ฌ์ ์์ฐ์ ์ด๊ณ ์์ธก ๊ฐ๋ฅํ๋ฉฐ ๊ฐ๋จํ ์ธ์ด๋ผ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ์ค์ํฉ๋๋ค, ์๋ํ๋ฉด ํ๋ฌํฐ์์ ์ฑ์ ์์ฑํ๋๊ฒ์ ๋จ์ํ ๋คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ํ๋ฌํฐ๋ ํ๋ถ์ ๋คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํด๋์ค๋ค์ด ์์ต๋๋ค.
markup ์ธ์ด์ ๊ด๋ จ๋๊ฑฐ๋ JSX์คํ์ผ์ ํ์ด๋ธ๋ฆฌ๋ ์ธ์ด๋ ์์ต๋๋ค. ๋ชจ๋ ํ๋ก ํธ ์๋ ์ฝ๋๋ ๋คํธ๋ก ์์ฑ๋ฉ๋๋ค. No HTML, No CSS.
# Flutter๊ฐ Dart๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋?
๋ง์ฝ ์ฌ๋ฌ๋ถ์ด ๋ค๋ฅธ ๊ธฐ์ ๋ฐฐ๊ฒฝ์ ์ฌ์ฉํด๋ดค๋ค๋ฉด ์๋ง๋ ํ๋ฌํฐ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋๋ผ ๋คํธ๋ฅผ ์ฌ์ฉํ๋ค๋ ์ฌ์ค์ ๋ํด ๋ถํํ์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ ํ์ ํ์์ ์ธ ์ด์ ๋ ์์ต๋๋ค. Dart๊ฐ ์ค๋๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ 25๊ฐ ์ธ์ด์ ํฌํจ๋์ง ์๋ ์ธ๊ธฐ ์๋ ์ธ์ด๋ผ๋ ๊ฒ์ ๋๋ค. โ๋ญ๋ผ๊ตฌ์? ๊ตฌ๊ธ์ด ์์ฌ ์ธ์ด๋ผ์ ์ฌ์ฉํ๋ค๊ตฌ์?โ ์ ๋ ๊ทธ๊ฒ๋ ๋ง๋ ์๋ฆฌ๋ผ๊ณ ์๊ฐํ์ง๋ง ์ค์ฉ์ ์ธ ์ด์ ๋ ์์ต๋๋ค.
- ๋คํธ๋ JIT(Just In Time)์ปดํ์ผ๊ณผ AOT(Ahead Of Time)์ปดํ์ผ์ ๋ชจ๋ ์ง์ํ๋ค.
- AOT์ปดํ์ผ๋ฌ๋ ๋คํธ์ฝ๋๋ฅผ ํจ์จ์ ์ธ native ์ฝ๋๋ก ๋ฐ๊พผ๋ค. ์ด๊ฒ์ ํ๋ฌํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ง๋ค์ง๋ง, ๊ฑฐ์ ๋ชจ๋ ํ๋ ์์ํฌ๊ฐ ๋คํธ๋ก ์์ฑ๋์์์ ์๋ฏธ ํ๋ค. ์ฌ๋ฌ๋ถ ์ฆ ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ ๊ฒ์ ์ปค์คํฐ๋ง์ด์งํ๋ค๋ ๊ฒ์ด๋ค.
- ๋คํธ์ ์ต์
์ธ JIT์ปดํ์ผ์
hot-reloading
์ ๊ฐ๋ฅ์ผ ํ๋ค. ๋น ๋ฅธ ๊ฐ๋ฐ๊ณผ ๋ฐ๋ณต์ ํ๋ฌํฐ ์ฌ์ฉ ์ฆ๊ฑฐ์์ ํต์ฌ์ด๋ค. ํ ์คํธ ํธ์ง๊ธฐ์ ์ฝ๋๋ฅผ ์ ์ฅํ๋ฉด ์๋ฎฌ๋ ์ดํฐ์์ ์ฑ์ด 1์ด ์ด๋ด์ ์ ๋ฐ์ดํธ ๋๋ค.
- ๋คํธ๋ ๊ฐ์ฒด ์งํฅ์ด๋ค. ์ด๊ฒ์ ๋คํธ๋ง์ผ๋ก ์๊ฐ์ ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ์ฝ๊ฒ ์์ฑ ํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ,
markup language
๋ ํ์์น ์๋ค. - ๋คํธ๋ ์์ฐ์ ์ด๊ณ ์์ธก ๊ฐ๋ฅํ ์ธ์ด์ด๋ค. ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ ์น์ํ๋ค. ์ฌ๋ฌ๋ถ์ด
๋์ ์ธ์ด(dynamic language)
๋ฅผ ์ฌ์ฉํด ์๋์ ์ ์ธ์ด(static language)
๋ฅผ ์ฌ์ฉํด ์๋ ์ฝ๊ฒ ์์ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ๊ฐ์ ํ์ฌ์์ ๋ง๋ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋งค์ฐ ๋งค๋ ฅ์ ์ด๋ผ๋ ์๊ฐ์ด ๋ค๊ธฐ๋ ํ๋ค. ์๋๋ฉด ํ๋ฌํฐ ํ์ ๋คํธ ํ๊ณผ ๊ธด๋ฐํ ํ๋ ฅํ์ฌ ํ์๋ก ํ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์๊ธฐ ๋๋ฌธ์ด๋ค.
# Why Flutter?
Flutter๊ณต๋ถ์ ์์ ๊ถ๊ธํ ์ ์ด ์๊ฒผ์ต๋๋ค.
Flutter๋ ์ด๋ค ์๋กญ๊ณ ํฅ๋ฏธ๋ก์ด ์ ์ด ์์๊น์?
๋จผ์ ์ด์ ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ์ ๊ฐ๋ตํ ์ญ์ฌ๋ฅผ ์์๋ณด์์ต๋๋ค.
# ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ์ ๊ฐ๋ตํ ์ญ์ฌ
๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ ๋ถ์ผ๋ ์๋์ ์ผ๋ก ์ต์ ๋ถ์ผ๋ผ๊ณ ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ด ๋ชจ๋ฐ์ผ ์ฑ์ ๊ฐ๋ฐํ์ง ๋ฏธ์ฒ 10๋ ์ด ๋์ง ์์๊ณ , ์ด๋ฅผ ์๊ฐํด๋ณด๋ฉด ๊ฐ๋ฐ ๋๊ตฌ๋ค์ด ์ฌ์ ํ ๋ฐ์ ํ๊ณ ์๋ค๋ ๊ฒ์ ๊ทธ๋ค์ง ๋๋ผ์ด ์ฌ์ค์ ์๋๋๋ค.
# OEM SDKs
์ ํ์ iOS SDK๋ฅผ 2008๋ ์ ๋ฆด๋ฆฌ์ฆํ๊ณ , ๊ตฌ๊ธ์ Android SDK๋ฅผ 2009๋ ์ ๋ฆด๋ฆฌ์ฆ ํ์ต๋๋ค. ์ด ๋ SDK๋ค์ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ธ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์์ฃ : Objetive-C, JAVA
์ฌ๊ธฐ์ ์ฑ์ ์์ ฏ์ ๋ง๋ค๊ณ ์นด๋ฉ๋ผ์ ๊ฐ์ ์๋น์ค์ ์ ๊ทผํ๊ธฐ ์ํด ํ๋ซํผ๊ณผ ์ง์ ๋ํ๋ฅผ ํฉ๋๋ค. ์์ ฏ๋ค์ ์คํฌ๋ฆฐ ์บ๋ฒ์ค์ ๋ ๋๊ฐ ๋๊ณ , ํ๋ฉด์์ ๋ฐ์๋ ์ด๋ฒคํธ๋ค์ ๋ค์ ํด๋น ์์ ฏ์ผ๋ก ๋ณด๋ด์ง๊ฒ ๋ฉ๋๋ค. ๋งค์ฐ ๊ฐ๋จํ ๊ตฌ์กฐ์ด์ฃ . ํ์ง๋ง, ๊ฐ ํ๋ซํผ๋ง๋ค ์์ ฏ์ ๋ค๋ฅด๊ณ ์ธ์ด ๋ํ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ์์ ๊ตฌ์กฐ์์๋ ๊ฐ ํ๋ซํผ๋ง๋ค ๋ ๋ฆฝ์ ์ธ ์ฑ์ ๋ง๋ค์ด์ผํฉ๋๋ค.
# WebViews
ํ๋์ ์ฝ๋๋ก ์ฌ๋ฌ๊ฐ์ ํ๊ฒฝ์์ ๋์ํ๋ ํฌ๋ก์ค ํ๋ซํผ ํ๋ ์์ํฌ๋ฅผ ํฅํ ์ฒซ๋ฒ์งธ ์๋๋ JavaScript์ WebView๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก์ต๋๋ค. PhoneGap, Apache Cordova, Ionic ๋ฑ๋ฑ์ด ์ฌ๊ธฐ์ ์ํฉ๋๋ค. iOS SDK๋ฅผ ๋ฆด๋ฆฌ์ฆํ๊ธฐ ์ , ์ ํ์ด ์์ดํฐ ๊ฐ๋ฐ์๋ค์๊ฒ ์น์ฑ์ ๋ง๋ค๋ผ๊ณ ๊ถ์ฅํ ์ฌ์ค์ ์๊ฐํด๋ณด๋ฉด, Web ๊ธฐ์ ์ ์ด์ฉํ ํฌ๋ก์ค ํ๋ซํผ์ ๋ฑ์ฅ์ ์ด์ฉ๋ฉด ๋น์ฐํ ์ ์ฐจ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
WebView ๊ธฐ๋ฐ์ ์ฑ์ HTML์ ๋ง๋ค๊ณ ์ด๋ฅผ ํ๋ซํผ ๋ด๋ถ์ WebView๋ฅผ ํตํด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ ๋๋ค. ํ์ง๋ง, JavaScript์ ๊ฐ์ ์ธ์ด๊ฐ ์ง์ ์ ์ผ๋ก ๋ค์ดํฐ๋ธ ์ฝ๋(์์ ์๋น์ค์ ๊ฐ์)์ ์ํตํ๋๊ฒ์ ๊ทธ๋ฆฌ ์ฌ์ด ์ผ์ด์๋๋๋ค. ์ด๋ฅผ ์ํด JavaScript ์์ญ๊ณผ Native ์์ญ ์ฌ์ด์์ ๋ฌธ๋งฅ ์ ํ์ ํด์ฃผ๋ ๋ธ๋ฆฟ์ง๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ํ๋ซํผ ๋ด๋ถ์ ์๋น์ค๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์์ฃผ ๋ถ๋ฆฌ์ง๋ ์๊ธฐ ๋๋ฌธ์, ์ด๋ฐ ๋ฐฉ์์ ๊ตฌํ์ด ์์ฒญ๋ ํผํฌ๋จผ์ค ๋ฌธ์ ๋ก ์ด์ด์ง์ง๋ ์์์ต๋๋ค.
# ๋ฆฌ์กํฐ๋ธ ๋ทฐ
๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ ํจํด์ ์ด์ฉํ ReactJS์ ๊ฐ์ ๋ฆฌ์กํฐ๋ธ ์น ํ๋ ์์ํฌ๋ ์ด์ ๋ณด๋ค ์น๋ทฐ ์์ฑ์ ๋งค์ฐ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ์๋ค๋ ์ ์์ ํฐ ์ธ๊ธฐ๋ฅผ ์ป๊ฒ ๋์์ต๋๋ค. 2015๋ ์ ๊ณต๊ฐ๋ React Native๋ ๋ฆฌ์กํฐ๋ธ ์คํ์ผ์ ๋ทฐ๋ค์ด ๊ฐ์ง๊ณ ์๋ ๋ค์ํ ์ฅ์ ๋ค์ ๋ชจ๋ฐ์ผ ์ฑ์ ์ ์ฉํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค.
React Native๋ ํ์ฌ ์์ฒญ๋ ์ธ๊ธฐ๋ฅผ ๋๋ฆฌ๊ณ ์์ง๋ง, JavaScript ์์ญ์ ์ฝ๋๊ฐ ๋ค์ดํฐ๋ธ ์์ญ์ ์๋ OEM ์์ ฏ์ ์ ์์ ํ๊ธฐ์ํด์ ๊ฒฐ๊ตญ ๋ธ๋ฆฟ์ง๋ฅผ ๊ฑฐ์น๊ฒ ๋ฉ๋๋ค. ๋ฆฌ์กํฐ๋ธ ๋ทฐ์์๋ OEM ์์ ฏ์ ๊ต์ฅํ ์์ฃผ ์ ๊ทผํ๊ฒ ๋๊ณ (์ฌ์ฉ์๊ฐ ํ๋ฉด์์ ์ค์์ดํ ํ๋ฒ์ ํ์๋ ์ต๋ ์ด๋น 60๋ฒ๊น์ง๋ ์ ๊ทผ), ์ด๋ ๊ฒฐ๊ตญ ํผํฌ๋จผ์ค ์ด์๋ฅผ ์ผ๊ธฐํ๊ฒ ๋ฉ๋๋ค. React Native์ ๋ํ ์ด๋ค ๊ธ (opens new window)์์๋ ์ด์ ๋ํด ๋ค์๊ณผ ๊ฐ์ด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค.
React Native์ ์ฑ๋ฅ์ ์ดํดํ๋ ์ฃผ๋ ์ด์ ๊ฐ ์ฌ๊ธฐ์ ์๋ค. ๊ฐ ์์ญ ๊ทธ ์์ฒด๋ ์์ฒญ๋๊ฒ ๋น ๋ฅด๋ค. ์ฑ๋ฅ์ ๋ณ๋ชฉ์ ์ฃผ๋ก ํ๋์ ์์ญ์์ ๋ค๋ฅธ ์์ญ์ผ๋ก ๋์ด๊ฐ๋ ๋ฐ์ํ๋ค. ๊ณ ์ฑ๋ฅ์ React Native ์ฑ์ ๊ตฌ์ถํ๊ธฐ ์ํด์๋, ์ด ๋ธ๋ฆฟ์ง๋ฅผ ๊ฑด๋๋ ํ์๋ฅผ ์ต์ํํด์ผํ๋ค.
# Flutter
Flutter๋ React Native์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฆฌ์กํฐ๋ธ ์คํ์ผ ๋ทฐ๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ํ์ง๋ง, Flutter๋ Dart (opens new window)๋ผ๋ ์ปดํ์ผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํด ์ด ๋ธ๋ฆฟ์ง๋ก ์ธํด ๋ฐ์ํ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํผํ๊ณ ์์ต๋๋ค. Dart๋ Ahead of time (AOT)์ ์ฌ๋ฌ ํ๋ซํผ์ ์์ํ๋ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ปดํ์ผ ๋ฉ๋๋ค.
๋ค์๋งํด, Flutter๋ ๋ฌธ๋งฅ ๊ตํ์ ํ๋ JavaScript ๋ธ๋ฆฟ์ง๋ฅผ ๊ฑฐ์น์ง ์๊ณ ํ๋ซํผ๊ณผ ์ง์ ์ ์ผ๋ก ์ปค๋ฎค๋์ผ์ด์ ํ๋ ๊ฒ์ ๋๋ค. ์ด์ฒ๋ผ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ปดํ์ผ์ด ๋๋ฉด ์ฑ์ ์คํํธ์ ์๊ฐ ๋ํ ๋นจ๋ผ์ง๊ฒ ๋ฉ๋๋ค. Flutter๊ฐ JavaScript ๋ธ๋ฆฟ์ง๋ฅผ ํ์๋ก ํ์ง ์์ผ๋ฉด์, ๋ฆฌ์กํฐ๋ธ ๋ทฐ๋ฅผ ์ ๊ณตํ๋ ์ ์ผํ ๋ชจ๋ฐ์ผ SDK๋ผ๋ ์ฌ์ค๋ง์ผ๋ก๋ Flutter๋ ์ด๋ฏธ ์ถฉ๋ถํ ํฅ๋ฏธ๋กญ๊ณ ์๋ํด๋ณผ๋งํ ๊ฐ์น๋ฅผ ๊ฐ์ง๋๋ค.
ํ์ง๋ง, ์ฌ๊ธฐ์ ๊ทธ์น์ง ์๊ณ Flutter๋ ํจ์ฌ ๋ ํ์ ์ ์ธ ๋ถ๋ถ๋ค์ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
# ์์ ฏ
์์ ฏ์ ์ฑ์ ๋ทฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ปจํธ๋กคํ๋ ์๋ฆฌ๋จผํธ๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์์ ฏ์ ๋ชจ๋ฐ์ผ ์ฑ์์ ๊ฐ์ฅ ์ค์ํ ์์๋ผ๊ณ ํด๋ ๊ณผ์ธ์ด ์๋ ๊ฒ๋๋ค. ์ฌ์ค์, ์์ ฏ๋ง์ผ๋ก ์ฑ์ ์ฑํจ๊ฐ ๊ฐ๋ฆด ์ ์์ต๋๋ค.
- ์์ ฏ์์ ๋ฃฉ์คํ์ ๋ค๋ฅธ ์ด๋ ํ ๊ฒ๋ณด๋ค๋ ์ค์ํฉ๋๋ค. ์์ ฏ์ ๋ค์ํ ์คํฌ๋ฆฐ ์ฌ์ด์ฆ์์ ๋ณด๊ธฐ ์ข์์ผํ๊ณ ๋ ์์ฐ์ค๋ฌ์ ๋ณด์ฌ์ผ ํฉ๋๋ค.
- ์์ ฏ์ ๋ฐ๋์ ๋น ๋ฅด๊ฒ ๋์ํด์ผํฉ๋๋ค: ์์ ฏ ํธ๋ฆฌ๋ฅผ ๋ง๋ค๋, ์์ ฏ๋ค์ ์ธํ๋ ์ดํธํ ๋, ํ๋ฉด์ ๋ฐฐ์น์ํฌ๋, ๋ ๋๋งํ ๋, (ํนํ) ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ์ค๋ ๋ฑ์ ํฌํจํด์ ๋ง์ด์ฃ .
- ์์ฆ ์ฑ์์ ์์ ฏ์ ํ์ฅ๊ฐ๋ฅํด์ผํ๋ฉฐ ์ปค์คํฐ๋ง์ด์ง์ด ๊ฐ๋ฅํด์ผํฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ ๋ง์์ ๋๋ ์๋ก์ด ์์ ฏ๋ค์ ์ถ๊ฐํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋ผ๊ณ , ์ฑ์ ๋ธ๋๋์ ๋งค์นญ๋๋๋ก ์ด๋ค์ ์ปค์คํฐ๋ง์ด์ง ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Flutter๋ ์์์ ์ธ๊ธํ ์๊ตฌ์ฌํญ๋ค ์ฆ, ์ข์ ๋ฃฉ์คํ, ๋น ๋ฅธ ์๋, ์ปค์คํฐ๋ง์ด์ฆ, ํ์ฅ๊ฐ๋ฅ์ฑ์ ์ง์ํ๋ ์์ ฏ์ ์ ๊ณตํ๋ ์๋ก์ด ์ํคํ ์ณ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ง์ต๋๋ค! ๋ฐ๋ก Flutter๊ฐ OEM ์์ ฏ๋ค (๋๋ DOM ์น๋ทฐ)์ ์ฌ์ฉํ์ง ์๊ณ , ์์ฒด์ ์ธ ์์ ฏ์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Flutter๋ ์์ ฏ๋ค๊ณผ ๋ ๋๋ฌ๋ค์ ํ๋ซํผ ์์ญ์์ ์ฑ์ ์์ญ์ผ๋ก ์ฎ๊ฒจ์์ต๋๋ค. ์ด๊ฒ์ ์ด์ ์์ ฏ๋ค์ด ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅํด์ก๊ณ ํ์ฅ๊ฐ๋ฅํด์ก๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. Flutter๊ฐ ํ๋ซํผ์ผ๋ก๋ถํฐ ์๊ตฌํ๋ ๊ฒ์ ์์ ฏ์ ๋ ๋ํ ์ ์๋ ์บ๋ฒ์ค๋ฟ ์ ๋๋ค. ์ด ์บ๋ฒ์ค๋ฅผ ํตํด ๋๋ฐ์ด์ค ์คํฌ๋ฆฐ์ ์์ ฏ์ ๊ทธ๋ฆฌ๊ณ , ์ด๋ฒคํธ๋ค(ํฐ์น, ํ์ด๋จธ ๋ฑ)๊ณผ ์๋น์ค๋ค(์์น, ์นด๋ฉ๋ผ ๋ฑ)์ ์ ๊ทผํ๊ฒ ๋ฉ๋๋ค.
Dart ํ๋ก๊ทธ๋จ (์ด๋ก์) ์์ญ๊ณผ ๋ค์ดํฐ๋ธ ํ๋ซํผ ์ฝ๋ (ํ๋์) ์ฌ์ด์๋ ์ธ์ฝ๋ฉ๊ณผ ๋์ฝ๋ฉ์ ๋ด๋นํ๋ ์ธํฐํ์ด์ค๊ฐ ์ฌ์ ํ ์กด์ฌํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋, JavaScript ๋ธ๋ฆฟ์ง์ ๋น๊ตํ์๋, ๋น๊ตํ ์ ์์ ์ ๋๋ก ๋น ๋ฅธ ์ฑ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์์ ฏ๋ค๊ณผ ๋ ๋๋ฌ๋ฅผ ์ฑ์ผ๋ก ์ฎ๊ฒจ์จ๊ฒ์ ์ฑ ์ฌ์ด์ฆ์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. Flutter ์ฑ์ ์ต์ ์ฌ์ด์ฆ๋ ์ฝ 6.7MB์ด๋ฉฐ, ์ด๊ฒ์ ๋น์ทํ ๊ฐ๋ฐ ๋๊ตฌ๋ค์ ์ด์ฉํด์ ๋ง๋ ์ต์ ํฌ๊ธฐ์ ์ฑ๋ค๊ณผ ๋น๊ตํ์ ๋ ๋น์ทํ ์ฌ์ด์ฆ์ ๋๋ค. Flutter์ ์ฅ์ ๋ค์ด ๋ค๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋นํด ๊ฐ์น๊ฐ ์๋์ง ์๋์ง ํ๋จํ๋ ๊ฒ์ ์ฌ๋ฌ๋ถ๋ค์ ๋ชซ์ ๋๋ค. ์ด ๊ธ์ ๋จ์ ๋ถ๋ถ์์๋ Flutter๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ ๋ง์ ์ฅ์ ๋ค์ ๋ํด์ ๋ค๋ค๋ณด๊ณ ์ ํฉ๋๋ค.
# ๋ ์ด์์
Flutter์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ์ค ํ๋๋ ๋ ์ด์์์ ํ๋ ๋ฐฉ์์ ์์ต๋๋ค.
๋ ์ด์์์ด๋ ์ ํด์ง ๊ท์น(ํน์ ์ ํ๋ค)์ ๋ฐ๋ผ์ ์์ ฏ์ ํฌ๊ธฐ์ ์์น๋ฅผ ์ ํ๋ ๊ฒ์ ์๋ฏธ
์ ํต์ ์ผ๋ก, ๋ ์ด์์์ ์ด๋ ํ ์์ ฏ์๋ ์ ์ฉํ ์ ์๋ ๊ท์น๋ค์ ๊ฑฐ๋ํ ์งํฉ์ ์ฌ์ฉํด์์ต๋๋ค. ์ฌ๊ธฐ์ ๊ท์น๋ค์ ๋ค์ํ ๋ ์ด์์ ํจ์๋ค์ ๊ตฌํํฉ๋๋ค. ๊ฐ์ฅ ์ ์๋ ค์ ธ์๋ CSS ๋ ์ด์์์ ์๋ก ๋ค์ด ๋ด ์๋ค. CSS๋ ์์ฑ๋ค(๊ท์น๋ค)์ ๊ฐ์ง๊ณ ์๊ณ , ์ด ์์ฑ๋ค์ HTML ์๋ฆฌ๋จผํธ๋ค (์์ ฏ๋ค)์ ์ ์ฉ์ด ๋ฉ๋๋ค (CSS3๋ 375๊ฐ์ ์์ฑ์ ์ ์ํ๊ณ ์์ต๋๋ค).
CSS๋ ๋ฐ์ค ๋ชจ๋ธ, ํ๋กํ ์๋ฆฌ๋จผํธ, ํ ์ด๋ธ, ํ ์คํธ ์ปฌ๋ผ, ํ์ด์ง ๋ฏธ๋์ด ๋ฑ๋ฑ์ ํฌํจํ๋ ์ ๋ง์ ๋ ์ด์์ ๋ชจ๋ธ์ ํฌํจํ๊ณ ์์ต๋๋ค. ์๊ฐ์ด ์ง๋์ ๊ฐ๋ฐ์๋ค๊ณผ ๋์์ด๋๋ค์ ๋ ์ด์์์ ๋ํด ๋ ๋ง์ ๋ถ๋ถ์ ์ปจํธ๋กค ํ๊ณ ์ถ์ดํ๊ณ , ์ด ํ์์ ๋ฐ๋ผ์ Flex Box์ Grid Layout ๋ชจ๋ธ๋ค์ ์ถ๊ฐํด์ผ๋ง ํ์ต๋๋ค. ์ ํต์ ์ธ ๋ ์ด์์์์ ์๋ก์ด ๋ชจ๋ธ๋ค์ ์ถ๊ฐํ ๋, ๊ฐ๋ฐ์๋ค์ด ์์ฒด์ ์ผ๋ก ์ถ๊ฐํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด ๋๋ฌธ์, Flex Box์ Grid Layout์ ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ฏ์ด CSS ํํ๋ก ์ถ๊ฐ๋์ด์ผ๋งํ์ต๋๋ค. ๋ค์ ๋งํด ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ค์ ์ด์ ๋ํ ๊ตฌํ์ ๋ค์ ํด์ผ๋ง ํ์ต๋๋ค.
์ ํต์ ์ธ ๋ ์ด์์์ด ๊ฐ์ง๊ณ ์๋ ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ก๋ ๊ท์น๋ค์ด ์๋ก ์ํธ์์ฉ ํ ์ ์์ผ๋ฉฐ (ํน์ ์์ฑ๋ค๊ฐ์ Conflict๊ฐ ๋ฐ์), ๋ณดํต ํ๋์ ์๋ฆฌ๋จผํธ์ ์์ญ๊ฐ์ ๊ท์น๋ค์ด ํ๊บผ๋ฒ์ ์ ์ฉ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ํ๊ฒฝ์ ๋ ์ด์์์ ์๊ฐ์ ๋๋ฆฌ๊ฒ ๋ง๋ญ๋๋ค. ๋ ์ด์์ ์ฑ๋ฅ์ ์ผ๋ฐ์ ์ผ๋ก N ์ ๊ณฑ์ ๋ณต์ก๋๋ฅผ ๋ฐ๋ฆ ๋๋ค. ๋ค์ ๋งํด, ์๋ฆฌ๋จผํธ์ ์ซ์๊ฐ ์ฆ๊ฐํจ์๋ฐ๋ผ, ๋ ์ด์์ ์๋๋ ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ๋๋ ค์ง๊ฒ ๋ฉ๋๋ค.
์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด, ๊ตฌ๊ธ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ํ ๋ฉค๋ฒ๋ค์ ์๋ก์ด ์คํ์ ์์ํ์ต๋๋ค. ๊ทธ๋ค์ ๋ง์ฝ ๊ทธ๋ค์ด ์ ํต์ ์ธ ๋ ์ด์์ ๋ชจ๋ธ์ ๋จธ๋ฆฟ์์ ์์ ํ ์ง์๋ฒ๋ฆฐ๋ค๋ฉด, ํจ์ฌ ๋ ๋น ๋ฅธ ๋ ๋๋ฌ๋ฅผ ๋ง๋ค ์ ์๋์ง ๊ถ๊ธํ์ต๋๋ค. ๋ช์ฃผ๊ฐ ์ง๋๊ณ ๊ทธ๋ค์ ๋์ ๋๋ ์ฑ๋ฅ ํฅ์์ ์ป์ ์ ์์์ต๋๋ค.
์ด๋ค์ด ๋ฐ๊ฒฌํ๊ฒ์:
- ๋๋ถ๋ถ์ ๋ ์ด์์์ ์๋์ ์ผ๋ก ๊ฐ๋จํ๋ค๋ ์ . ์คํฌ๋กค ํ์ด์ง์ ์๋ ํ ์คํธ, ๋์คํ๋ ์ด ์ฌ์ด์ฆ์ ๋ฐ๋ผ ์์น์ ํฌ๊ธฐ๊ฐ ๋ณํ๋ ์ง์ฌ๊ฐํ, ๊ทธ๋ฆฌ๊ณ ํ ์ด๋ธ๋ค, ํ๋กํ ์๋ฆฌ๋จผํธ๋ค ์ ๋๋ง ํ์ํ๋ค๋ ์ .
- ๋๋ถ๋ถ์ ๋ ์ด์์์ ์์ ฏ์ ์๋ธํธ๋ฆฌ์ ์ํด์์ผ๋ฉฐ, ์ด ์๋ธํธ๋ฆฌ๋ ๋ณดํต ํ๋์ ๋ ์ด์์ ๋ชจ๋ธ๋ง์ ์ฌ์ฉํ๋ค๋ ์ . ๋ค์ ๋งํด, ํ๋์ ํน์ ์์ ฏ์ ์ง์ํ๊ธฐ ์ํด ์์ฃผ ์ ์ ์ซ์์ ๊ท์น๋ค๋ง์ด ํ์ํ๋ค๋ ์ .
๊ทธ๋ค์ ๊ด์ ์ ์์ ํ ๋ฐ๊พธ๋ฉด ๋ ์ด์์์ ํจ์ฌ ๋ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
- ์ด๋ ํ ์์ ฏ์๋ ์ ์ฉ๋ ์ ์๋ ์์ฒญ๋๊ฒ ํฐ ๊ท๋ชจ์ ๋ ์ด์์ ๊ท์น๋ค ๋์ , ๊ฐ ์์ ฏ์ด ๋ณธ์ธ๋ง์ด ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ์ ๊ฐ๋จํ ๋ ์ด์์ ๋ชจ๋ธ์ ๊ฐ์ง๋ฉด ๋๋ค.
- ์ด์ ๊ฐ ์์ ฏ์ ๊ณ ๋ คํด์ผํ๋ ๋ ์ด์์ ๊ท์น์ด ๊ต์ฅํ ์์์ง๊ธฐ ๋๋ฌธ์, ๊ฐ ์์ ฏ์ ์ํ ์ต์ ํ๋ฅผ ํ ์ ์๊ฒ ๋๋ค.
- ๋ชจ๋ ๊ฒ๋ค์ ์์ ฏํ ์ํค๋ฉด, ๋์ฑ ๊ฐ๋จํ ๋ ์ด์์์ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์๋ค.
์ด์ Flutter๋ฅผ ์ด์ฉํด ๊ฐ๋จํ ์์ ฏ ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ์ฝ๋๋ฅผ ์ดํด๋ด ์๋ค
new Center(
child: new Column(
children: [
new Text('Hello, World!')),
new Icon(Icons.star, color: Colors.green)
]
)
)
์ด ์ฝ๋์ ๊ตฌ๋ฌธ์ ์ด๋ฏธ ์ด๋ค ๊ฒฐ๊ณผ๋ฌผ์ด ๋ง๋ค์ด์ง์ง ์ถฉ๋ถํ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ์ฝ๋๋ฅผ ํตํด ์ป์ด์ง๋ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
์ด ์ฝ๋์์ ๋ ์ด์์์ ํฌํจํ ๋ชจ๋ ๊ฒ์ ์์ ฏ์
๋๋ค.
Center ์์ ฏ์ ์์ ฏ์ ๋ถ๋ชจ(์์ ์์ ์์๋ ์คํฌ๋ฆฐ)์ ์ค์์ ์์ ฏ์ ์์ ์์ ฏ๋ค์ ์์น์ํต๋๋ค.
Column ์์ ฏ์ ์ด ์์ ฏ์ ์์ ์์ ฏ๋ค์ ์์ง์ผ๋ก ๋์ด ์ํต๋๋ค.
์ด Column์ Text ์์ ฏ๊ณผ Icon ์์ ฏ(์ ์์ฑ์ ๊ฐ์ง๋)์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
Flutter์์ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ด๋ ํจ๋ฉ ์ญ์๋ ์์ ฏ์ ๋๋ค. ์ฌ์ง์ด ํ ๋ง๋ค๊น์ง๋ ์์ ์์ ฏ๋ค์๊ฒ ์ ์ฉ๋๋ ๋๋ค๋ฅธ ์์ ฏ์ด๋ฉฐ, ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ค๋น๊ฒ์ด์ ๊น์ง๋ ์์ ฏ์ ๋๋ค.
Flutter๋ Column๋ฟ ์๋๋ผ Row, Grid, List ๋ฑ ๊ฝค๋ ๋ง์ ์์ ฏ์ ํฌํจํ๊ณ ์์ต๋๋ค. ๊ฒ๋ค๊ฐ, Flutter๋ Silver Layout Model์ด๋ผ๊ณ ์นญํ๋ ์คํฌ๋กค๋ง์ ์ํด ์ฌ์ฉ๋๋ ๊ณ ์ ํ ๋ ์ด์์ ๋ชจ๋ธ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์คํฌ๋กค๋ง์ ๋ฐ๋์ ์ฆ๊ฐ์ ์ด๋ฉด์๋ ๋ถ๋๋ฝ๊ฒ ๋ฐ์ํด์ผ๋ง ์ฌ์ฉ์๋ค์ด ๋ฌผ๋ฆฌ์ ์ธ ํ๋ฉด์ ๋๋๊ทธํ์ ๋, ์๋์ ์ด๋ฏธ์ง๊ฐ ๋ถ์ด์๋ ๋ฏํ ๋๋์ ์ค๋๋ค. Flutter์ ๋ ์ด์์์ ๊ต์ฅํ ๋นจ๋ผ์ ๋ฐ๋ก ์ด๊ฒ์ ํด๋ผ ์ ์์ต๋๋ค.
์คํฌ๋กค๋ง์ ์ํด ๋ ์ด์์์ ์ฌ์ฉํจ์ผ๋ก์จ Flutter๋ ์๋ ์ด๋ฏธ์ง์ ๊ฐ์ ๋ฐ์ ๋ ํํ์ ์คํฌ๋กค๋ง์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์๋ ์ด๋ฏธ์ง๊ฐ GIF ์ด๋ฏธ์ง๋ผ๋ ์ ์ ์์ง ๋ง์ธ์. Flutter๋ ์ด๋ณด๋ค ๋ ๋ถ๋๋ฝ์ต๋๋ค! ์ด ๊ธ์ ๋ง์ง๋ง์ ์๋ ๋ฆฌ์์ค์์ ํด๋น ์ฑ์ ์ฝ๋๋ฅผ ์ฐพ์ ๋๋ ค๋ณผ ์ ์์ต๋๋ค. ๊ผญ ํ๋ฒ ๋๋ ค๋ณด์ธ์!
๋๋ถ๋ถ์ ๊ฒฝ์ฐ Flutter๋ ํ๋ฒ์ ํจ์ค๋ก ๋ ์ด์์์ ๊ตฌ์ถ ํ ์ ์์ต๋๋ค.
๋ค์ ๋งํด, ๋ฆฌ๋์ด ํ์์์ ๋๋ผ ์ ์๋๊ฑฐ์ฃ . ์ด ๋๋ฌธ์ Flutter๋ ๋ง์ ์์ ์์ ฏ๋ค์ ํ๊บผ๋ฒ์ ๋ค๋ฃจ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
์ฌ๊ธฐ์ ์ถ๊ฐ๋ก Flutter๋ ๋งค๋ฒ ๋ ์ด์์ ์์
์ ํ์ง ์๊ธฐ์ํด, ์บ์ฌ๋ฅผ ๋น๋กฏํ ๋ค์ํ ์์
๋ค์ ์ํํฉ๋๋ค.
# ์ปค์คํ ๋์์ธ
Flutter๋ ์์ ฏ์ ์ฑ์ ์ผ๋ถ๋ก ์ฎ๊ฒจ์๊ธฐ ๋๋ฌธ์, ์๋ก์ด ์์ ฏ์ ์ถ๊ฐํ๋ ๊ฒ ํน์ ๊ธฐ์กด์ ์์ ฏ๋ค์ ๋ค๋ฅธ ๋ฃฉ์คํ์ ์ฃผ๊ฑฐ๋ ํ์ฌ ๋ธ๋๋์ ๋ง๋๋ก ์ปค์คํฐ๋ง์ด์งํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ํ๋์ ๋ชจ๋ฐ์ผ ๋์์ธ ํธ๋ ๋๋ ํ์ ๋ฐํ ์ฑ์ ๋ง๋๋ ๊ฒ์์ ์์ ํ ๋ฉ์ด์ ธ ์์ผ๋ฉฐ, ์ฌ์ฉ์์๊ฒ ๊ธฐ์จ์ ์ฃผ๋ ์ปค์คํ ๋์์ธ์ ํฅํด ์ ์ ๋ ๋ฐ์ ํด ๋์๊ฐ๊ณ ์์ต๋๋ค.
Flutter๋ ํ๋ถํ๊ณ , ์ปค์คํฐ๋ง์ด์ฆ ๊ฐ๋ฅํ Android, iOS ๊ทธ๋ฆฌ๊ณ Material ๋์์ธ์ ๊ฐ์ง๊ณ ์์ต๋๋ค (์ฌ์ค, Flutter๊ฐ ๊ฐ์ฅ ๋์ ์์ค์ Material ๋์์ธ์ ์ ๊ณตํ๊ณ ์๋ค๋ ์ด์ผ๊ธฐ๊ฐ ์ข ์ข ๋ค๋ฆฝ๋๋ค). Flutter๋ ์ปค์คํฐ๋ง์ด์ฆ ๋ฅ๋ ฅ์ ํ์ฉํด์ ๋ฉํฐ ํ๋ซํผ์ ์๋ ๋ค์ดํฐ๋ธ ์์ ฏ๋ค์ ๋ฃฉ์คํ๊ณผ ๋งค์นญ๋๋ ์์ ฏ๋ค์ ์ง์ํ๊ณ ์์ต๋๋ค. ์ฑ ๊ฐ๋ฐ์๋ค ์ญ์ ์ด ์ปค์คํฐ๋ง์ด์ฆ ๋ฅ๋ ฅ์ ์ฌ์ฉํด์ ์์ ๋ค์ ์๊ตฌ์ ํ์์ ๋ง๋๋ก Flutter์์ ์ ๊ณตํ๋ ์์ ฏ์ ๋ณํ์ํค๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
# Hot reload
Flutter์์ ๊ฐ์ฅ ์ ๋ช ํ ํน์ง์ ๋น ๋ฅด๊ณ , statefulํ Hot reload ๊ธฐ๋ฅ์ ๋๋ค. ์ฑ์ด ๋์ํ๊ณ ์๋ ๋์ Flutter ์ฑ์ ๋ณ๊ฒฝ์ ์ค ์ ์์ต๋๋ค.
Flutter๋ ๋ณดํต ์ผ์ด์์ ์ด์ ์ฝ๋ ์ํ๋ฅผ ์ ์งํ๋ฉด์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ์ ์ฉํฉ๋๋ค. ๋ง์ฝ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด, ๊ฐ๋ฐ์๋ ํด๋น ์๋ฌ๋ฅผ ์์ ํ๊ณ Flutter๋ ๋ง์น ์๋ฌ๊ฐ ์์๋๊ฒ์ฒ๋ผ ๊ทธ ์ด์ ์ํ๋ฅผ ์ ์งํ๋ฉฐ ๋์ํฉ๋๋ค. ์ฌ์ง์ด ์ฑ ์ ์ฒด๋ฅผ ๋ค์ ๋ก๋ฉํ ๋์กฐ์ฐจ๋ ๊ต์ฅํ ๋น ๋ฆ ๋๋ค.
# ๊ทธ๋์, Flutter๋ ๋ฌด์์ด ์๋กญ๊ณ ํฅ๋ฏธ๋ก์ด๊ฐ?
์ด์ ๋๊ตฐ๊ฐ๊ฐ ์ด๋ฐ ์ง๋ฌธ์ ์ฌ๋ฌ๋ถ์๊ฒ ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋๋ตํด์ผํ๋์ง ์์ค ๊ฒ๋๋ค.
- JavaScript ๋ธ๋ฆฟ์ง ์๋ ๋ฆฌ์กํฐ๋ธ ๋ทฐ์ ์ฅ์ ๋ค
- ๋น ๋ฅด๊ณ , ๋ถ๋๋ฝ๊ณ , ์์ธก๊ฐ๋ฅํ AOT ์์ Native ์ฝ๋๋ก ์ปดํ์ผ๋๋ ์ธ์ด
- ์์ ฏ๊ณผ ๋ ์ด์์์ ๋ชจ๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ ์
- ์๋ฆ๋ต๊ณ ์ปค์คํฐ๋ง์ด์ง์ด ๊ฐ๋ฅํ ์์ ฏ๋ค
- Hot reload๋ฅผ ํฌํจํ ์ต๊ณ ์ ๊ฐ๋ฐ ํ๊ฒฝ
- ์ฑ๋ฅ์ด ์ข๊ณ , ํธํ์ฑ์ด ๋ฐ์ด๋๋ฉฐ, ์ฌ๋ฏธ์์!
- ํ๋์ ์ฝ๋๋ก ๋ฉํฐ ํ๋ซํผ์์ ๋์ํ๋ ์ฑ์ ๋ง๋ค ์ ์๋ค!