- ์ด ํ๋ก์ ํธ๋ ์ธํ๋ํ๊ต ์ข ํฉ์ค๊ณ(์บก์คํค) ํ๋ก์ ํธ๋ฅผ ํตํด ๋ง๋ ๋ ธ์ฝ๋๋ฅผ ํตํ ์ ์ ๋ค์ด ๊ฐ๋จํ UI๋ฐฐ์น๋ง์ผ๋ก๋ ๋ชจ๋ฐ์ผ์์ ๋์ ๊ฐ๋ฅํ ์ฝํ ์ธ ๋ฅผ ์ ์ ํ ์ ์๋ ํ๋ซํผ ์ ๋๋ค.
๋ฐฐํฌ ์๋ฃ
์ฐจํ๊ท : ์น, ์ฑ ์ ํ๋ฆฌ์ผ์ด์
์ด์๋ฏผ : API ์๋ฒ ๊ฐ๋ฐ, ํฌ๋กค๋ฌ ๊ฐ๋ฐ
์ด์ฌ์ : API ์๋ฒ ๊ฐ๋ฐ, ์๋ฒ ๊ด๋ฆฌ ๋ฐ ๊ตฌ์ถ
๊ฐ๋จํ ๋์ ์์
10๋ถ๋ง์ ๊ณ์ฐ๊ธฐ ์ฑ ๋ง๋๋ ์์
- ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์ ๊ฐ ์ฌ์ฉ์์๊ฒ ํ์ํ ๊ธฐ๋ฅ๋ค์ ์๊ตฌ์ฌํญ์ ์ฆ๊ฐํ๋ ๋ฐ๋ฉด์ ์ค์ ๋ก ์ถ์๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ์์ฉ์ฑ์ด ์๋ค๋ฉด ๋ง๋ค์ง ์๋๋ค. ํ์ง๋ง ์ ๋ง๋ก ๊ฐ๋จํ ๊ธฐ๋ฅ๋ค์ด ํ์ํ ์ฌ์ฉ์๋ค์ ์ด๋ฅผ ๊ตฌํํ ๊ธฐ์ ์ด ์๊ณ ๊ฐ๋ฐ์๋ค์ด ๊ตฌํํด ์ฃผ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ ค์ผ๋ง ํ๋ค. ํ์ง๋ง BYOA๋ฅผ ํตํด ์ ๋ฌธ์ง์์ด ์๋ ๋น๊ฐ๋ฐ์๋ค๋ ๋ ธ์ฝ๋๋ฅผ ํตํด ๊ฐ๋จํ UI๋ฐฐ์น ๋ง์ผ๋ก๋ ๊ฐ๋จํ๊ฒ ์์ ๋ง์ ๊ธฐ๋ฅ์ ๋ง๋ค ์ ์๋ค. ๋ํ ๊ฐ ์ฌ์ฉ์๋ค์ด ๋ง๋ ๋ชจ๋ ์ฑํ๋ฉด์ ๊ณต์ ๋๊ธฐ์ ๊ตณ์ด ์์ ์ด ๋ง๋ค์ง ์์๋ ํ์ธ์ด ๋ง๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
- ์น์ฌ์ดํธ์ ์ ์ํ ํ ์ ๊ณต๋๋ ํ ํ๋ฆฟ์ ํตํด UI๋ฅผ ๋ฐฐ์นํ๋ค.
- ๋๋ฒ์งธ ํ๋ฉด์์ ๊ทธ๋ฆผํ ํด์ ์ด์ฉํด ๋ฐฐ์นํ ์์ ฏ๋ค์ ๋ํ ๊ธฐ๋ฅ ์ค๋ช ์ ์ ๋๋ค.
- ๋ชจ๋ฐ์ผ ํ๋ฉด์ ๋ณด์ฌ์ค [ํ์ดํ, ๋ฐฐ๋์ด๋ฏธ์ง, ์๋ธํ์ดํ, ์ฑ ์ค๋ช , ์นดํ ๊ณ ๋ฆฌ]๋ฅผ ์ ๋๋ค.
- ๋ชจ๋ฐ์ผ ์ฑํ๋ฉด์์ ์์ ์ด ๋ง๋ ์ฑ์ ํ์ธํ๋ค.
- ๊ฐ๋จํ๊ฒ ๊ฐ์ธ์ด ์ํ๋ ์ฑ ํ๋ฉด์ ์ฌํํ๊ฒ ๋์์ธํ์ฌ ์ฆ๊ฐ์ ์ผ๋ก ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ชจ๋ ๋ฐ์ดํฐ๋ ํด๋ผ์ฐ๋์ ์ ์ฅ๋๊ธฐ์ ์ฌ์ฉ์๋ค์ ๋ฐ๋ก ์ ์ฅ์ ๊ด๋ จํด์ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค.
- ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋๋ [ํจ์, ๋์๋ฐฉ์]์ ์๊ฐํ ํ์ ์์ด ๊ฐ๋จํ ํ ์คํธ ์ค๋ช ๋ง์ผ๋ก AI๊ฐ ์๋์ผ๋ก ์ถ๋ก ํ์ฌ ๊ธฐ๋ฅ์ ๋ง๋ค์ด ์ฃผ๊ธฐ์ ์ ์ ์๊ฐ์ผ๋ก ๋์ ์์ค์ ๊ธฐ๋ฅ์ ๋ง๋ค ์ ์๋ค.
-
์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ
-
๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์ ๊ธฐ๋ฅ
-
๋ชจ๋ฐ์ผ ํ๋ฉด์ ๊พธ๋ฐ ์ ์๋ ์ ๊ณต๋๋ ํ ํ๋ฆฟ Layout ๊ธฐ๋ฅ
- BOX CONTAINER
- ๋๋น, ๋์ด, ์์์ ๋ณ๊ฒฝ ํ ์ ์์ต๋๋ค.
- Row-divider
- ๊ตต๊ธฐ, ์์, ๋๋น
- Col-divider
- ๊ตต๊ธฐ, ์์, ๋์ด
- Text
- ํ ์คํธ ๋ด์ฉ, ํฐํธ ์ฌ์ด์ฆ, ํฐํธ ๊ตต๊ธฐ, ์์
- Image (๋คํธ์ํฌ ์ด๋ฏธ์ง)
- ์ด๋ฏธ์ง URL, ๋๋น, ๋์ด
- Button
- ๋ฒํผ ํ ์คํธ, ๋๋น, ๋์ด, ๊ทธ๋ฆผ์, ์์, ํฐํธ ์์
- Icon
- ์์ด์ฝ ๋ณ๊ฒฝ, ์ฌ์ด์ฆ, ์์
- ListTile
- ํ์ดํ, ์๋ธ ํ์ดํ, Leading text, Trailing text, ํฐํธ ์ฌ์ด์ฆ, ์์
- Check box
- TextField
- RadioButton
- BOX CONTAINER
-
๋ฐฐ์นํ UI์์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ์ ์๋ ํ๋ฉด
- ์ง์ฐ๊ฐ
- ์ ๊ทธ๋ฆฌ๊ธฐ
- ํ ์คํธ
- ์ด๋ฏธ์ง ๋ฐฐ์น
- ๋ํ ๋ฐฐ์น [Line, Arrow, Double Arrow, Rectangle, Oval]
-
๋ชจ๋ฐ์ผ ํ๋ฉด ๋ฑ๋ก ํ์ด์ง
- ํ์ดํ
- ๋ฐฐ๋ ์ด๋ฏธ์ง ๋ฑ๋ก
- ์๋ธ ํ์ดํ
- ์ค๋ช
- ์นดํ ๊ณ ๋ฆฌ
-
- ๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์ ๊ธฐ๋ฅ
- ํ ํ๋ฉด
- ๊ฐ ์ฌ์ฉ์๋ค์ด ๋ง๋ ์ฑ ํ๋ฉด ๋ฆฌ์คํธ๋ค์ด ListViewํํ๋ก ๋์ด ๋๋๋ก ๊ตฌํ
- Drawer
- ์ฌ์ฉ์ ๋๋ค์ / ์นดํ ๊ณ ๋ฆฌ / ๋ก๊ทธ์์
- ๋ง์ด ํ์ด์ง
- ๋ด๊ฐ ๋ง๋ ์ฑ ๋ฆฌ์คํธ๋ค์ ํ์ธ ํ ์ ์์
### ๊ตฌํ์ ์ฌ์ฉํ Pakages
+ flutter_native_splash: ^2.3.2 // ์ฑ ํ๋ฉด ์คํ๋์ฌ ํ๋ฉด
+ flutter_colorpicker: ^1.0.3 // ์ฑ๋ด์ ์ปฌ๋ฌ๋ฅผ ์ค์ ํ๋ ํจํค์ง
+ get: // ์ํ๊ด๋ฆฌ ํจํค์ง
+ cached_network_image: ^3.3.0 // ๋คํธ์ํฌ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๋ ํจํค์ง
+ flutter_iconpicker: ^3.2.4 // ์์ด์ฝ์ ์ ํํ๋๋ก ๋์์ฃผ๋ ํจํค์ง
+ http: // ์๋ฒ ํต์ ํจํค์ง API ํธ์ถ ๋ฑ
+ fluttertoast: ^8.2.3 // ๋ฉ์ธ์ง๋ฅผ ํธํ๊ฒ ์ถ๋ ฅํ๊ฒ ํด์ฃผ๋ ํจํค์ง
+ dio: ^4.0.0 // ์๋ฒ ํต์ ํจํค์ง
+ http_parser: ^4.0.2 // ์๋ฒ ํต์ ํจํค์ง
+ collection: ^1.15.0 // ๊ธฐ๋ฅ ํ์ฅ ํจํค์ง
+ phosphor_flutter: // ๊ทธ๋ฆผํ ํจํค์ง
+ file_picker: // ํ์ผ ๋ถ๋ฌ์ค๊ธฐ ํจํค์ง-
getx tag ๊ธฐ๋ฅ
- ๊ฐ ํ ํ๋ฆฟ์ ํ๋ฉด์ ๋ฐฐ์นํ๊ณ ๋์ ๋ฐฐ์น๋ ์์ ฏ์ ํด๋ฆญํ์๋ properties(์์ธ ์ค์ )์ ํ๊ธฐ ์ํด ๊ฐ ํด๋์ค์ ๊ณ ์ ๊ฐ์ ๋ฃ์ด์ ๊ฐ๊ฐ ๊ด๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋๋ฐ ์ด๋ฅผ tag๊ฐ์ ๋ฃ์ด์ ๊ด๋ฆฌ๋ฅผ ํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ ํ์๋ค.
-
RepaintBoundary (์น ์คํฌ๋ฆฐ์ท)์ฌ์ฉ Flutter ์น ๊ฐ์ ๊ฒฝ์ฐ ์์ง ๋ถ์กฑํ ์ ์ด ๋ง์์ง๋ผ pub.dev์ ๋ง์ ํจํค์ง๊ฐ ์ฌ๋ผ์์์ง๋ง web๊ด๋ จ ํจํค์ง๋ ์ด๋ฏธ 3๋ ์ ์ ์ ๋ฐ์ดํธ๊ฐ ๋๊ฑฐ๋ ์ง์์ด ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. ๊ทธ๋์ ์ ๊ธฐ๋ฅ(๊ธฐ๋ณธ ์ ๊ณต ๊ธฐ๋ฅ)์ ํตํด ์คํฌ๋ฆฐ์ท์ ์ฐ์๋ค.
์ด๋ฏธ์ง๋ Dart์ ์ด๋ฏธ์ง ํฌ๋งท์ธ Uint8List๋ก ์ ์ฅ์ด ๋๊ณ ์์ถ๋ฅ ์ด ์๊ฐ๋ณด๋ค ์ข์๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ์ง๋ฅผ ์๋ฒ์ multipart/form-data ํํ๋ก ์ ์กํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์๋ค. (Dio ํจํค์ง ์ฌ์ฉ)
-
Dragable์ ์ฌ์ฉํ ๋ ๋๋๊ทธ ํ ์ ๋ณด์ฌ์ค ์ด๋ฏธ์ง๋ค์ ์ธ๋ถ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์๋๋ฐ ์ ์๊ถ ๋ฌธ์ ๋ก ์ง์ ์์ผ๋ก ๊ทธ๋ ค์ assets์ ์ ์ฉํ์๋ค.