๊ฐ์์๋ฒ์ฉ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ Code-Server๋ฅผ ์ค์นํ ํ ์ฝ๋ฉ์ ๋ํ ์ ์ฝ ์ฌํญ์ด ๋ง์ด ๊ฐ์ ๋์๋ค.์์ดํจ๋์์ ๋ด ๊ฐ์ธ Code-Server๋ก ์ ์ํ์ฌ NodeJS API ๊ตฌํ์ ํ๋ ๋ฑ, ๊ฐ๋ฐ ์ทจ๋ฏธ์ ๋ํ ์์ ๋๊ฐ ๋ง์ด ๋์์ก๋ค. (๋์ค์ฝ๋ ๋ด๋ code-server๋ฅผ ํตํด ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํ ์๋ฃ). Code-Server ๋ง์ธ!!!!์์ฆ์ Flutter Web์ ํตํด ์ด๋ฐ์ ๋ฐ ์คํ์ ์งํํ๊ณ ์๋๋ฐ, Flutter Web๋ Headless-server๋ฅผ ๊ทผ๋ณธ์ผ๋ก ํฌํธ๋ฅผ ๊ตฌ์ฑํ์ฌ Chrome์ด๋ ๊ธฐํ ๋ธ๋ผ์ฐ์ ์์ ๋๋ฒ๊ทธ๊ฐ ๊ฐ๋ฅํ๊ฒ ๊ตฌํ์ด ๋์ด์๋ ๋ฏํ๋ค.๊ทผ๋ฐ ์ด ๋
์, ๋ง์ฝ ์ธ๋ถ์ ์ ๊ทผํ ์ ์๋ ํ๊ฒฝ์ด๋ผ๋ฉด, Code-Server๋ฅผ ํตํด์๋ ์ถฉ๋ถํ Flutter ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค๋ฉด ์ด๋จ๊น?๋ผ๋ ์๊ฐ์ด ๋ค์ด..
๐ Flutter
1) ๊ฐ์ ํ๋ฌํฐ๋ฅผ ์
๋ฌธํ ์ง ์ด๋๋ง 3๋
์ฐจ๊ฐ ๋์ด๊ฐ๋ค. ๊ทธ๋์ ์ํ๊ด๋ฆฌํด๋ก์จ Provider๋ฅผ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํด ์์์ง๋ง ์ธ์ ๊ฐ๋ Deprecated ๋๋ค๋ Provider์ ์ฐฝ์์์ ๋ง์ ์ถฉ๊ฒฉ์ ๋ฐ๊ฒ ๋์๋ค. ๋ค๋ฅธ ์ํ๊ด๋ฆฌํด์ ์ตํ์ผ ๋ ๋๊ฐ ๋ ๊ฒ ๊ฐ์ ์์๋ณด๋ ๋์ค GetX์ BLoC์ ๋์ ๋ค์ด๊ฒ ๋์๋๋ฐ GetX์ ๊ฒฝ์ฐ์ 10๊ฐ์์งธ ํจํค์ง ์
๋ฐ์ดํธ๊ฐ ์ด๋ค์ง์ง ์๊ณ ์๊ณ BLoCํจํด์ ๊ฒฝ์ฐ๋ ๊ฐ๋จํ ํ๋ก์ ์ ์ด์ธ๋ฆฌ์ง ์์ผ๋ฉฐ ๋์ด๋๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง์ผ๋ก Provider์ ๊ณ์น์์ธ RiverPod์ ์๊ฒ ๋์๋ค. RiverPod ์ Provider์ ์ฒ ์์์ ์์๋ง ๋ฐ๋ ๋จ์ด์ด๋ฉฐ Provider์์ ์ปดํ์ผ๋ฌ ์ค์ ๋ฐ์ํ๋ ์ค๋ฅ, ์ฌ๋ฌ ๋ฌธ์ ์ ๋ค์ ์ต๋ํ ๊ฐ์ ํ์ฌ RiverPod์ผ๋ก ๋ฐฐํฌ๊ฐ ๋์..
์ต๊ทผ์ ํ ์ดํ๋ก์ ํธ๋ก ์งํ ์ค์ธ Flutter Web ์ฌ์ดํธ์ ๋ฒ์ ์ ๋ฐ๊พธ๊ฒ ๋ ์ผ์ด ์๊ฒจ ์
๋ฐ์ดํธ๋ฅผ ํ๋ ค ํ๋๋ฐ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค. ์ต์ ๋ฒ์ ์ ๋ฐ์ํ ์ดํ Flutter web์ ๋น๋ํ์ผ์ ์๋ฒ์ ์ ์ฉ์ ํ ํ ์ ์์ ํด๋ณด๋๋ฐ ์บ์ ๋ ์ด์ ํ์ด์ง๊ฐ ๊ทธ๋๋ก ๋ณด์ด๋ ๊ฒ์ด๋ค. ๋ฌธ์ ๋ฅผ ํ์ธํด ๋ณด๋ ํ๋ฌํฐ ์น์ main.dart.js๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋๋๋ฐ ์ด ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ด๋ค ๋ณด๋ ๊ฐฑ์ ์ ํ๋ ค๋ฉด ์ฟผ๋ฆฌ๋ฅผ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํ์ฌ ๋ฒ์ ์ ์ฌ๋ ค์ค์ผ ์ ๊ท main.dart.js๋ฅผ ์น๋ธ๋ผ์ฐ์ ์์ ์ธ์์ ํ๊ณ ๊ฐ์ ธ์ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ผ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ ์ด๋ณด๋๋ก ํ๊ฒ ๋ค. 1.Flutter Web์ ๋น๋ํ๋ค (flutter build web --web-renderer canvaskit --release) 2. ์ดํ ๋น๋๋ ํด๋์ ์ด..
๋ช ์๊ฐ ๋์ ์ฝ์งํด์ ๊ฒจ์ฐ ์์๋ธ ์ค๋ฅ ํ๋๋ฅผ ์ก๊ฒ ๋์๋ค. ์์ธ์ Flutter์ ์ธ๋ถ dependency์ธ flutter_sounds๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์ถ๊ฐ๋ฅผ ํ ๋ค์ IOS์์ ๋น๋๋ฅผ ํ๋ ค ํ๋๋ฐ deploy๋ฒ์ ์ด ์ ๋ง๋ ๋ฑ ๊ฐ์ข
์ค๋ฅ๊ฐ ํญ๋ฐํ๋ค๊ฐ flutter clean ๋๋ IOS ํด๋๋ฅผ ํต์งธ๋ก ์ง์ฐ๊ณ flutter create . ๋ฅผ ์ฐ๋ ๋ฐฉ๋ฒ์ ํด๋ดค๋ค. ๋ฌผ๋ก ํด๊ฒฐ์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ต์ข
์ ์ผ๋ก ์ง๋ฉดํ ์ค๋ฅ๊ฐ Undefined symbol: ___gxx_personality_v0 ์ธ๋ฐ Xcode ๋ด์์ ๋น๋๋ฅผ ํ์ฌ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์๋ ๊ฒ์ ๋ณด์๋ค. ๊ตฌ๊ธ์ ์ฌ๊ธฐ์ ๊ธฐ ์ฐพ์๋ณด๋ ๊นํ๋ธ์์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ฌ๋ ค์ค ๊ฒ์ ๋ณด์๊ณ M1 ๋งฅ๋ถ์์ ์์ฃผ ๋ฐ์ํ๋ ์ค๋ฅ๋ก ๋ณด์๋ค. IOS buildSetting์..
์ด๋ฒ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋ด๋ ์์ ฏ์ ๊พธ๋ฏธ๊ณ ์์๋๋ฐ ํ ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. Row์์ Text๋ฅผ ๋ฃ์๋๋ฐ ๊ธ์ ์๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ ์๋ฆฌ๋ ํ์์ด ๋ฐ๊ฒฌํ๋ ๊ฒ์ด๋ค. Text์์ฑ์ overFlow ์ต์
์ ์ ์ฉํด์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ค ํ์ง๋ง, ์ด ๋ฐฉ๋ฒ์ ๋ถ๋ชจ ์์ ฏ์ ์ฌ์ด์ฆ๊ฐ ์ง์ ๋์ด์ผ ์๋ฆฌ๋ ํ์์ ํด๊ฒฐํ ์ ์๋ ๊ฒ ๊ฐ์๋ค. ๊ทธ๋์ ์ฐพ์ ๋ฐฉ๋ฒ์ด Flexible์ ์๊ฒ ๋์๋ค. Row๋ Column ์์ ฏ์์ ๋จ์ ์๋ฆฌ๋ฅผ ์ ๋ถ ์ฑ์ฐ๋๋ก ์ค์ ํ๋ ์์ ฏ์ธ๋ฐ, ์๋ ์ฝ๋์ฒ๋ผ Flexible์ ๋ถ๋ชจ๋ก์ ๊ฐ์ธ์ฃผ๋ฉด ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค. Row( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( '์ด๋ฆ:'..
์ด๋ฒ์ FutureBuilder๋ฅผ ๊ตฌํํ๋ฉด์ ํ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ๋ฐ์ํ๋ค. snapshot.hasData ์ snapshot.hasError๋ฅผ ๊ตฌํํ๋๋ฐ Future ํจ์์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด hasError๋ก ๋๊ฒจ ์ค๋ฅ ์ํ๋ฅผ ํ์ํ๋๋ก ํ๋ ค๊ณ ํ๋ค. ๊ทธ๋ฐ๋ฐ hasData๋ ์ ๋ถ๋ฌ์๋ hasError๋ ์๋์ด ์ ๋๋ ๊ฒ์ด๋ค. ์ฐพ์๋ณด๋ StackOverflow์์ ๋๋ ๋น์ทํ ์ฌ๋ก๋ฅผ ๋ฐ๊ฒฌํ๋ค. ์๋ ์ฝ๋๊ฐ ๋์ ๊ฐ์ ์ผ์ด์ค์ด๋ค. try { var response = await http.get(url); // Success if (response.statusCode == 200) { [...] } // Failure else { return Future.error("Error"); } } catch (e) ..