
๐ ์ค๋ ํ์ต ํ๋ฉฐ, ๋๋์
โ Flutter ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ (SDK, Gradle, JDK ๋ฑ)
โ VS Code์์ Flutter ํ๋ก์ ํธ ๊ตฌ์ฑ ๋ฐ ๋๋ฒ๊น
โ PHP ๋๋ฒ๊น ํ๊ฒฝ ์ค์ (Xdebug + VS Code)
โ Flutter ๋ฐ PHP ๋ฒ์ ํธํ์ฑ ๋ฌธ์ ํด๊ฒฐ
โ Flutter StatelessWidget vs StatefulWidget ์ฐจ์ด์ ๋ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ
๐ ๋ด์ผ ํ์ตํ ๊ฒ
๐ ์ค๋ ํ์ต ํ๋ฉฐ, ๋๋์
์ด์ ๋ TIL์ ๋ชป์ผ๋ค.
์ด์ ๋.. ์ค์
๊ธ์ฌ ๋๋ฌธ์..
์ค์
๊ธ์ฌ๋ ๋ชป ๋ฐ๊ณ
์ง์์ ๊ณต๋ถ๋ง ํ๋ค๋ ๊ฒ์
๋๋ฌด๋ ํฐ ์ฌ์น..
์ธ๊ฐ๋ ๋ฃ๊ณ ,
OT๋ ๋ฃ๊ณ ,
์ ๋ง ๋ฐ์ํ๋ฃจ์๋ค.

์กฐ๊ธ๋ง ๋,,
ํ๊ณ TIL ์จ์ผ์ง..์จ์ผ์ง..
ํ๋ค๊ฐ ์์ ๋๊ธฐ๊ณ ..

์ค๋๋... ์ญ์ ๋๋ฌด๋ ๋ฆ๋ค..
๊ด๋ฆฌํด์ฃผ์๋ ๊ฒ์ ์ข์ง๋ง..
๊ธํ๋ค ๊ธํด..
์ญ์.. ์ญ์ ์ด? ๊ฒ์ ์ด?
๋ชป ๋ฐ๋ผ๊ฐ๋ค๊ณ ๋๋ ค๋ ํ ๋ง์ด ์๋ค.

๊ทธ๋งํด์ฃผ์ธ์.....
๊ทธ๋ง...
๊ทธ๋ง...

๊ทธ๋๋ ์ฑ๊ฒจ์ฃผ๋ ๊ฒ์ ์ข๋ค..

์ค๋์ Flutter์์
์์ ฏ ๊ฐ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ
๋ฐ์ดํฐ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค.
์ฒ์์๋ StatelessWidget์ ์ฌ์ฉํด์
Header์ score์ tryCount ๊ฐ์ ๋ฃ์์ง๋ง,
๊ฐ์ด ๋ฐ๋์ด๋
ํ๋ฉด์ด ์
๋ฐ์ดํธ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋์ StatefulWidget์์
๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ,
setState()๋ฅผ ์ฌ์ฉํ์ฌ
UI๋ฅผ ๊ฐฑ์ ํ๋ ๋ฐฉ์์ ์ ์ฉํ๋ค.
๋ํ, VS Code์์
JDK ์ค์ ๋ฌธ์ ๋ฐ
Gradle ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๋ฉด์
Flutter ํ๋ก์ ํธ๋ฅผ ์ํํ๊ฒ
์คํํ ์ ์๋๋ก ์์ ํ๋ค.
โ Flutter ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ (SDK, Gradle, JDK ๋ฑ)
๐ ๋ฌธ์ &์๋ฌ์ ๋ํ ์ ์
- flutter run ์คํ ์ Gradle ๋น๋ ์ค๋ฅ ๋ฐ์
- JAVA_HOME ํ๊ฒฝ ๋ณ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์ง ์์ JDK๋ฅผ ์ฐพ์ ์ ์๋ค๋ ์ค๋ฅ ๋ฐ์
- flutter doctor ์คํ ๊ฒฐ๊ณผ์์ Android SDK์ Gradle์ด ์ ๋๋ก ๊ฐ์ง๋์ง ์์
๐ ๋ด๊ฐ ํ ์๋
- JDK 21์ ์ค์นํ์ผ๋ Flutter์์ ์ง์ํ์ง ์๋ ๋ฒ์ ์ด๋ผ ์ค๋ฅ ๋ฐ์
- ํ๊ฒฝ ๋ณ์(JAVA_HOME)์ ์๋์ผ๋ก ์ค์
- flutter doctor๋ฅผ ์คํํ๋ฉฐ ์ค๋ฅ ์์ธ์ ๋ถ์
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
- JDK 17๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ฌ Gradle๊ณผ ํธํ๋๋๋ก ์์
- JAVA_HOME์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ฉ
- flutter config --android-sdk ๋ช ๋ น์ด๋ก Android SDK ๊ฒฝ๋ก๋ฅผ ์๋์ผ๋ก ์ง์
๐ ์๋กญ๊ฒ ์๊ฒ ๋ ์
- Flutter๋ ์ต์ JDK(21)๊ฐ ์๋ JDK 17์ ๊ถ์ฅํ๋ฏ๋ก ์ง์๋๋ ๋ฒ์ ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- flutter doctor๋ฅผ ์คํํ์ฌ ์ค์น๋ SDK, Gradle, JDK๊ฐ ์ ์์ ์ผ๋ก ๊ฐ์ง๋๋์ง ํ์ธํ๋ ์ต๊ด์ด ํ์ํ๋ค.
๐ ์ด ๋ฌธ์ &์๋ฌ๋ฅผ ๋ค์ ๋ง๋๊ฒ ๋์๋ค๋ฉด?
- JDK ๋ฒ์ ์ ๋จผ์ ํ์ธํ๊ณ Flutter ๊ณต์ ์ง์ ๋ฒ์ ์ ์ค์น
- flutter doctor๋ฅผ ์คํํ์ฌ ํ๊ฒฝ ๋ณ์(JAVA_HOME, ANDROID_HOME)๊ฐ ์ ์์ ์ผ๋ก ์ค์ ๋์๋์ง ํ์ธ
- Flutter ํ๋ก์ ํธ๋ฅผ ํด๋ฆฐ(flutter clean)ํ๊ณ Gradle ์บ์ ์ญ์ ํ ์ฌ๋น๋
โ VS Code์์ Flutter ํ๋ก์ ํธ ๊ตฌ์ฑ ๋ฐ ๋๋ฒ๊น
๐ ๋ฌธ์ &์๋ฌ์ ๋ํ ์ ์
- Flutter ํ๋ก์ ํธ์์ Android ์๋ฎฌ๋ ์ดํฐ๊ฐ ๊ฐ์ง๋์ง ์์
- flutter run์ ์คํํ๋ฉด Gradle sync ์คํจ ๋ฐ ๋น๋ ์ค๋ฅ ๋ฐ์
- settings.gradle์์ Flutter Gradle ํ๋ฌ๊ทธ์ธ ๋ก๋ ์คํจ
๐ ๋ด๊ฐ ํ ์๋
- VS Code์์ Flutter์ Dart ํ์ฅ ํ๋ฌ๊ทธ์ธ์ ๋ค์ ์ค์น
- flutter clean ํ flutter pub get ์คํํ์ฌ ์์กด์ฑ ์ฌ์ค์น
- android/app/build.gradle๊ณผ android/settings.gradle์ ์ ๊ฒ
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
- settings.gradle์์ pluginManagement ๋ธ๋ก์ ์์ ํ์ฌ Flutter Gradle ํ๋ฌ๊ทธ์ธ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ก๋
- android/app/build.gradle์์ Gradle ๋ฒ์ ๊ณผ classpath๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ
- AVD(Android Virtual Device)๋ฅผ ์๋์ผ๋ก ์์ฑํ์ฌ ์๋ฎฌ๋ ์ดํฐ๊ฐ ๊ฐ์ง๋๋๋ก ์ค์
๐ ์๋กญ๊ฒ ์๊ฒ ๋ ์
- VS Code์ Flutter/Dart ํ์ฅ ํ๋ฌ๊ทธ์ธ์ ์ต์ ๋ฒ์ ์ผ๋ก ์ ์งํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- Flutter ํ๋ก์ ํธ์ settings.gradle๊ณผ build.gradle์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์ง ์์ผ๋ฉด Gradle ๋น๋์ ์คํจํ ์ ์๋ค.
๐ ์ด ๋ฌธ์ &์๋ฌ๋ฅผ ๋ค์ ๋ง๋๊ฒ ๋์๋ค๋ฉด?
- flutter doctor๋ฅผ ์คํํ์ฌ VS Code์ Android SDK๊ฐ ์ ์์ ์ผ๋ก ๊ฐ์ง๋๋์ง ํ์ธ
- flutter clean ํ flutter pub get์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋ค์ ์ด๊ธฐํ
- Gradle ๋ฒ์ ์ ํ์ธํ๊ณ Flutter ์ต์ ๋ฒ์ ์ ๋ง๋ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ
โ PHP ๋๋ฒ๊น ํ๊ฒฝ ์ค์ (Xdebug + VS Code)
๐ ๋ฌธ์ &์๋ฌ์ ๋ํ ์ ์
- VS Code์์ PHP Debug ํ๋ฌ๊ทธ์ธ์ ์ค์นํ์ง๋ง, ์ค๋จ์ (Breakpoints)์ด ์๋ํ์ง ์์
- php -v ์คํ ์ PHP ๋ฒ์ ์ด ๋ค๋ฅด๊ฒ ์ถ๋ ฅ๋๊ฑฐ๋, PHP๊ฐ ์ธ์๋์ง ์์
- launch.json ์ค์ ํ์๋ Xdebug๊ฐ VS Code์ ์ฐ๊ฒฐ๋์ง ์์
๐ ๋ด๊ฐ ํ ์๋
- php.ini์์ zend_extension=xdebug๋ฅผ ์ถ๊ฐํ๊ณ ์ค์ ๊ฐ ์์
- ํ๊ฒฝ ๋ณ์์์ PHP ๊ฒฝ๋ก๋ฅผ ํ์ธํ๊ณ php -v๋ก ์ ์์ ์ผ๋ก ์ธ์๋๋์ง ํ์ธ
- launch.json์์ Xdebug ํฌํธ๋ฅผ 9003์ผ๋ก ์์
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
- PHP ๋ฒ์ ์ 8.4.4 → 8.1๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ฌ VS Code์ PHP Debug ํ๋ฌ๊ทธ์ธ๊ณผ ํธํ
- php.ini์์ Xdebug ํ์ฅ ๊ฒฝ๋ก๋ฅผ ๋ช ์ํ๊ณ , xdebug.remote_enable=1 ์ค์
- VS Code์์ ๋๋ฒ๊น ์ PHP ์คํ ๊ฒฝ๋ก๋ฅผ ๋ช ํํ๊ฒ ์ค์
๐ ์๋กญ๊ฒ ์๊ฒ ๋ ์
- PHP์ Xdebug๋ VS Code์ PHP Debug ํ๋ฌ๊ทธ์ธ๊ณผ ๋ฒ์ ์ด ๋ง์ง ์์ผ๋ฉด ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋๋ค.
- php.ini๋ฅผ ๋ณ๊ฒฝํ ํ์๋ Apache ๋๋ PHP ์๋ฒ๋ฅผ ์ฌ์์ํด์ผ ์ค์ ์ด ์ ์ฉ๋๋ค.
๐ ์ด ๋ฌธ์ &์๋ฌ๋ฅผ ๋ค์ ๋ง๋๊ฒ ๋์๋ค๋ฉด?
- php -v๋ก PHP ๋ฒ์ ์ ํ์ธํ๊ณ , VS Code์ ํธํ๋๋ ๋ฒ์ ์ธ์ง ์ฒดํฌ
- php.ini์์ Xdebug ์ค์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ฉ๋์๋์ง ์ ๊ฒ
- VS Code์ launch.json ์ค์ ์ ํ์ธํ๊ณ , Xdebug ํฌํธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์
โ Flutter ๋ฐ PHP ๋ฒ์ ํธํ์ฑ ๋ฌธ์ ํด๊ฒฐ
๐ ๋ฌธ์ &์๋ฌ์ ๋ํ ์ ์
- Flutter์ Gradle ๋น๋ ๊ณผ์ ์์ ์ง์๋์ง ์๋ JDK ๋ฒ์ ์ค๋ฅ ๋ฐ์
- PHP ๋๋ฒ๊น ์ ์ํด Xdebug ์ค์ ์ ํ์ผ๋ VS Code์์ ๋๋ฒ๊น ์ด ์๋ํ์ง ์์
๐ ๋ด๊ฐ ํ ์๋
- Flutter์ Gradle์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด JDK ๋ฒ์ ์ ๋ค์ด๊ทธ๋ ์ด๋
- PHP ๋ฒ์ ์ ์ต์ ์ผ๋ก ์ ์งํ์ผ๋, Xdebug ํ๋ฌ๊ทธ์ธ๊ณผ ํธํ๋์ง ์์
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
- JDK 21 → 17๋ก ๋ณ๊ฒฝํ์ฌ Flutter Gradle ๋น๋ ์ฑ๊ณต
- PHP 8.4.4 → 8.1๋ก ๋ณ๊ฒฝํ์ฌ Xdebug ์ ์ ์๋ ํ์ธ
๐ ์๋กญ๊ฒ ์๊ฒ ๋ ์
- Flutter์ PHP๋ ์ต์ ๋ฒ์ ์ด ํญ์ ํธํ๋๋ ๊ฒ์ด ์๋๋ฏ๋ก, ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ฒ์ ์ ๋ง์ถ๋ ๊ฒ์ด ์ค์ํ๋ค.
- PHP์ ๊ฒฝ์ฐ Xdebug์ VS Code ํ์ฅ ํ๋ฌ๊ทธ์ธ์ ํธํ์ฑ์ด ๋ง์์ผ ๋๋ฒ๊น ์ด ๊ฐ๋ฅํ๋ค.
๐ ์ด ๋ฌธ์ &์๋ฌ๋ฅผ ๋ค์ ๋ง๋๊ฒ ๋์๋ค๋ฉด?
- Gradle ๋ฐ Flutter ๋ฒ์ ์ด JDK์ ํธํ๋๋์ง ๊ณต์ ๋ฌธ์๋ฅผ ํ์ธ
- php -v ๋ฐ php -m | grep xdebug ๋ช ๋ น์ด๋ก Xdebug ํ์ฑํ ์ํ ํ์ธ
โ Flutter StatelessWidget vs StatefulWidget ์ฐจ์ด์ ๋ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ
๐ ๋ฌธ์ &์๋ฌ์ ๋ํ ์ ์
- Header ์์ ฏ์์ score์ tryCount๊ฐ ์ ๋ฐ์ดํธ๋์ง ์์
- ๋ฒํผ์ ํด๋ฆญํด๋ ๊ฐ์ด ๋ฐ๋์ง ์๊ณ ์ด๊ธฐ ๊ฐ(0)์์ ๋ณํ์ง ์์
๐ ๋ด๊ฐ ํ ์๋
- Header ๋ด๋ถ์์ ์ง์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ์๋ (score += 10)
- setState() ์์ด ๊ฐ์ ๋ณ๊ฒฝํ์ฌ UI๊ฐ ์ ๋ฐ์ดํธ๋์ง ์์
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ ๋ฐ์ ์ธ ์ฝ๋ ์ฌ๊ฒํ
๐ ์๋กญ๊ฒ ์๊ฒ ๋ ์
- ์ถํ ๋ธ๋ก๊ทธ ํฌ์คํ ์์
๋ด์ผ ํ์ตํ ๊ฒ
์.. ๋ด๊ฐ ์๊ฐ๋ณด๋ค ๋ชป ๋ฐ๋ผ๊ฐ์
TIL์ ์กฐ๊ธ ๋ ์๊ฐ์ ์์์ผ๊ฒ ๋ค.
ํ์์ ๋ฐ๊พธ๊ณ ,
๊ณต๋ถ์ ์ง์คํ ์ ์๋๋ก ํด์ผ์ง.
โ
2์ฃผ์ฐจ ์์
โ
1์ฃผ์ฐจ ์ ๋ฆฌ ๋ฐ ํฌ์คํ
โ
TIL ํ์ ๊ณ ๋ฏผ
๐ ์ค๋ ์ ๋ฆฌํ๋ฉด์ ๋๋ ์
์ค๋์ Flutter ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ๋ฐ PHP ๋๋ฒ๊น
ํ๊ฒฝ ๊ตฌ์ถ์ ์งํํ๋ฉด์
๋ฒ์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์ด ๋งค์ฐ ์ค์ํ๋ค๋ ๊ฒ์ ๋ฐฐ์ ๋ค.
ํนํ, Flutter UI๊ฐ ์ํ ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ ์
๋ฐ์ดํธ๋๋ ์๋ฆฌ๋ฅผ ๋ช
ํํ๊ฒ ์ดํดํด์ผ
์์ผ๋ก ๋ ๋ณต์กํ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ด๋ ค์์ ์ค์ผ ์ ์์ ๊ฒ ๊ฐ๋ค.
๋ด์ผ์ ์ํ ๊ด๋ฆฌ๋ฅผ ๋ ๊น์ด ๊ณต๋ถํ๊ณ Provider๋ฅผ ํ์ฉํ ๊ตฌ์กฐํ๋ ์ํ ๊ด๋ฆฌ๋ฅผ ์ฐ์ตํด์ผ๊ฒ ๋ค! ๐