Inflearn brand logo image
Inflearn brand logo image
BEST

Flutter ๊ณ ๊ธ‰ - ํ˜„์—… ์ˆ˜์ค€์˜ ์•„ํ‚คํ…์ฒ˜

์‹ค์ œ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ˆ˜์ค€์˜ ์•ฑ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋งŒ๋“ค์–ด๋ณด๋Š” ์‹ค์ „ ๊ฐ•์˜. Clean Architecture์™€ MVVM ํŒจํ„ด์„ ์ ์šฉํ•˜์—ฌ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์•ฑ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ• ํ•™์Šต.

์ค‘๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ, Flutter] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • Clean Architecture์™€ MVVM ํŒจํ„ด์„ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๋ณต์žกํ•œ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์ƒํƒœ ๊ด€๋ฆฌ์™€ ๋ผ์šฐํŒ…์„ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์‹ค์ œ ์„œ๋น„์Šค ์ˆ˜์ค€์˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

๋น…ํ…Œํฌ ๊ธฐ์—…์ด ์„ ํƒํ•œ ๋ชจ๋˜ ์•ฑ ์•„ํ‚คํ…์ฒ˜
Clean Architecture & MVVM ํŒจํ„ด

์‹ค์ „ Flutter ์•ฑ ๊ฐœ๋ฐœ:
ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์•ฑ ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ์•ฑ ์•„ํ‚คํ…์ฒ˜ ๐Ÿ—


์•ฑ์ด ์ปค์งˆ์ˆ˜๋ก ์ฝ”๋“œ๋Š” ์™œ ์ ์  ๋” ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๊ณ  ์žˆ๋‚˜์š”? ๐Ÿค”

๋‹ต์€ Clean Architecture์™€ MVVM ํŒจํ„ด์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋น…ํ…Œํฌ ๊ธฐ์—…๋“ค์ด ์ฑ„ํƒํ•œ ์ด ์•„ํ‚คํ…์ฒ˜๋Š” ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ•ต์‹ฌ ์„ค๊ณ„ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋ณธ ๊ฐ•์˜์—์„œ๋Š” Flutter์™€ Clean Architecture๋ฅผ ์‚ฌ์šฉํ•ด ์‹ค์ œ ์„œ๋น„์Šค ์ˆ˜์ค€์˜ ์•ฑ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. Dependency Injection, ๊ณ„์ธตํ˜• ์ƒํƒœ ๊ด€๋ฆฌ, ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์ž‘์„ฑ, ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๋“ฑ ์‹ค๋ฌด์—์„œ ๋งˆ์ฃผํ•˜๋Š” ๊นŠ์ด ์žˆ๋Š” ์ฃผ์ œ๋“ค์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
Hello World ์ˆ˜์ค€์˜ ํŠœํ† ๋ฆฌ์–ผ์— ์ง€์ณค๋‹ค๋ฉด, ์ด ๊ฐ•์˜์—์„œ production ready ์ƒํƒœ์˜ ์•ฑ์„ ๋งŒ๋“ค๋ฉด์„œ ์ง„์ •ํ•œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„์˜ ์žฌ๋ฏธ๋ฅผ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”! ๐Ÿ’ช

์ด ๊ฐ•์˜์˜ ํŠน์ง•

๐Ÿ“Œ ์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋“ค๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ œ์‹œ

๐Ÿ“Œ GitHub๋ฅผ ํ†ตํ•œ ๋‹จ๊ณ„๋ณ„ ์†Œ์Šค์ฝ”๋“œ ์ œ๊ณต

๐Ÿ“Œ ๋ชจ๋“  ์ฝ”๋“œ๋Š” ์œ ๋‹› ํ…Œ์ŠคํŠธ์™€ UI ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ์ค‘๊ธ‰์ž ์ด์ƒ์„ ์œ„ํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

1โƒฃ Figma์—์„œ ๋ถ€ํ„ฐ ํ˜„์—… ์ˆ˜์ค€์˜ ์•ฑ์„ ์ œ์ž‘ํ•˜๋Š” ๊ฐ€์ด๋“œ

๋ณธ ๊ฐ•์˜์—์„œ๋Š” Figma๋กœ ๋ถ€ํ„ฐ ๋””์ž์ธ์„ ๋ฐ›์•˜์„ ๋•Œ ์•ฑ์„ ๊ฐœ๋ฐœํ•ด ๋‚˜๊ฐ€๋Š” ๊ณผ์ •์„ ์ƒ์„ธํžˆ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.


2โƒฃ ๊ฐ•์˜์—์„œ ์ž‘์„ฑํ•˜๋Š” ์•ฑ์˜ ํด๋” ๊ตฌ์กฐ

๊ฐ•์˜์—์„œ ์ž‘์„ฑํ•˜๋Š” ์•ฑ์˜ ๊ตฌ์กฐ.
ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜์˜ MVVM, MVI ํŒจํ„ด


3โƒฃ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฏธ์‚ฌ์šฉ

๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์˜๋ฌด๊ฐ์œผ๋กœ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Flutter ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋งŒ์œผ๋กœ ์ƒํƒœ๊ด€๋ฆฌ๋Š” ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
๋ณธ ๊ฐ•์˜์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ตœ์†Œํ•œ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


4โƒฃ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ UI ์„ค๊ณ„

์–ด๋– ํ•œ ์™ธ๋ถ€ ์š”์ธ์—๋„ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š” UI ์ž‘์„ฑ


5โƒฃ ๋”ฅ ๋งํฌ ์นœํ™”์ ์ธ ๋ผ์šฐํ„ฐ ๊ตฌ์„ฑ

ํ˜„์—…์—์„œ ๊ผญ ํ•„์š”ํ•œ ๋”ฅ ๋งํฌ ์นœํ™”์ ์ธ ๋ผ์šฐํ„ฐ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ• ์•ˆ๋‚ด


6โƒฃ ๋” ๋ณต์žกํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์—๋Ÿฌ ํ•ธ๋“ค๋ง ์ „๋žต

๊ธฐ์กด Result ํŒจํ„ด์„ ๊ฐœ๋Ÿ‰ํ•˜์—ฌ ๋ณต์žกํ•œ ์ƒํ™ฉ์— ์ ์ ˆํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ์ œ์‹œ


์ด๋Ÿฐ ๊ณ ๋ฏผ์„ ํ•˜๋Š” ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœํ•ด์š”

์ฝ”๋“œ๊ฐ€ ์ ์  ๋ณต์žกํ•ด์ ธ
๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์š”

์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜๋Š”
์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ์–ด์š”

ํ…Œ์ŠคํŠธ์™€ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด
์•ฑ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์š”

"์œ„์ ฏ์€ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด์„œ ์ฝ”๋“œ๊ฐ€ ์ž๊พธ ์ŠคํŒŒ๊ฒŒํ‹ฐ๊ฐ€ ๋˜์š”..."

"ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜, MVVM์„ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์š”"

"์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๊ณ  ์‹ถ์€๋ฐ ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์š”"

"์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์š”"

"ํšŒ์‚ฌ์—์„œ ๋‹น์žฅ ์จ๋จน์„ ์ˆ˜ ์žˆ๋Š” ์‹ค์ „ ์ง€์‹์ด ํ•„์š”ํ•ด์š”"

"ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์š”"

"์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์ˆ˜์ •ํ•ด์•ผ ํ•ด์š”"

"๋””์ž์ธ ํŒจํ„ด์„ ๊ณต๋ถ€ํ–ˆ์ง€๋งŒ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์š”"

"๊ธฐ์ˆ  ๋ถ€์ฑ„๊ฐ€ ์Œ“์ด๋Š” ๊ฒƒ ๊ฐ™์•„ ์ด๋Œ€๋กœ ๋‘์–ด๋„ ๊ดœ์ฐฎ์„์ง€ ๋ถˆ์•ˆํ•ด์š”"


์ˆ˜๊ฐ• ํ›„์—๋Š” ์ด๋ ‡๊ฒŒ ๋‹ฌ๋ผ์ ธ์š” โœจ


1. ์ฒด๊ณ„์ ์ธ ์•ฑ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•ด์ ธ์š”

  • Clean Architecture์˜ ๊ฐ ๋ ˆ์ด์–ด๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๊ณ  ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์–ด์š”

  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ ๋„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์–ด์š”

  • SOLID ์›์น™์„ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ผ์š”

2. ํ”„๋กœํŽ˜์…”๋„ํ•œ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์š”

  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด๋„ ์‚ฌ์šฉํ•œ ํšจ์œจ์ ์ธ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์„ ํ„ฐ๋“ํ•˜๊ฒŒ ๋ผ์š”

  • ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๋„ ๊น”๋”ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”

  • ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์—†๋Š” ๊น”๋”ํ•œ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ ธ์š”

3. ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์š”

  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ถ€ํ„ฐ UI ํ…Œ์ŠคํŠธ๊นŒ์ง€ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์ž‘์„ฑ์„ ํ•  ์ˆ˜ ์žˆ์–ด์š”


  • ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์–ด์š”

4. ์‹ค๋ฌด์—์„œ ์ธ์ •๋ฐ›๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์š”

// Before class HomeScreen extends StatefulWidget { @override State<HomeScreen> createState() => _HomeScreenState(); } // After class HomeScreen extends StatelessWidget { final HomeState state; final void Function(HomeAction action) onAction; // ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ ๋†’์€ ์ฝ”๋“œ ์ž‘์„ฑ }

5. ํฌํŠธํด๋ฆฌ์˜ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์™„์„ฑ๋ผ์š”

  • ์‹ค์ œ ์„œ๋น„์Šค ์ˆ˜์ค€์˜ ์™„์„ฑ๋„ ๋†’์€ ์•ฑ์„ ํฌํŠธํด๋ฆฌ์˜ค๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”


  • ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์šฉํ•œ ์‹ค์ œ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์š”

์ด๋Ÿฐ ๋‚ด์šฉ์„ ๋ฐฐ์›Œ์š”.


โœ… Clean Architecture: ๊ณ„์ธต ๋ถ„๋ฆฌ์™€ ์˜์กด์„ฑ ์ฃผ์ž…

"์•„ํ‚คํ…์ฒ˜๊ฐ€ ์—†๋Š” ์•ฑ์€ ๋ ˆ๊ณ  ์—†๋Š” ์žฅ๋‚œ๊ฐ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค." ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ UI๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ณ , ์˜์กด์„ฑ ์ฃผ์ž…์„ ํ†ตํ•ด ์œ ์—ฐํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

โœ… MVVM ํŒจํ„ด: ์ƒํƒœ ๊ด€๋ฆฌ์™€ ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„

"์ƒํƒœ ๊ด€๋ฆฌ๋Š” ์•ฑ์˜ ์‹ฌ์žฅ์ž…๋‹ˆ๋‹ค." ํšจ์œจ์ ์ธ ์ƒํƒœ ๊ด€๋ฆฌ, ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์„ค๊ณ„๋กœ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์‰ฌ์šด ์•ฑ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

โœ… ์—๋Ÿฌ ํ•ธ๋“ค๋ง: ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ํ–ฅ์ƒ

"์—๋Ÿฌ๋Š” ํ”ผํ•  ์ˆ˜ ์—†์ง€๋งŒ, ๊ด€๋ฆฌํ•  ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค." ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜, ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ, ์˜ˆ์™ธ ์ƒํ™ฉ์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ์ ˆํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

โœ… ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ: UI ์„ค๊ณ„์™€ ๊ตฌํ˜„

"์ข‹์€ ์ปดํฌ๋„ŒํŠธ๋Š” ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด ํ‰์ƒ ์”๋‹ˆ๋‹ค." ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•, ํšจ์œจ์ ์ธ ์œ„์ ฏ ํŠธ๋ฆฌ ๊ตฌ์„ฑ๊ณผ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

์ด ๊ฐ•์˜๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ

  • 2018 : ๋  ๋•Œ๊นŒ์ง€ ์•ˆ๋“œ๋กœ์ด๋“œ ์ง‘ํ•„

  • 2018 : ์˜ค์ค€์„์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์ƒ์กด์ฝ”๋”ฉ: ์ฝ”ํ‹€๋ฆฐ ํŽธ ์ง‘ํ•„

  • 2020 : ๊ตญ๋‚ด 1ํ˜ธ ํ”Œ๋Ÿฌํ„ฐ ์„œ์  : ์˜ค์ค€์„์˜ ํ”Œ๋Ÿฌํ„ฐ ์ƒ์กด์ฝ”๋”ฉ ์ง‘ํ•„ (2020 ์„ธ์ข…๋„์„œ ์„ ์ •)

  • 2020 ~ 2024 : Flutter ๊ฐœ๋ฐœ์ž ๊ต์œก 9๊ฐœ ๊ธฐ์ˆ˜ ์šด์˜


์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

  • ๊ฐ•์˜๋Š” ๋งฅOS, Flutter 3.24, Dart 3.5.4 ๊ธฐ์ค€์œผ๋กœ ์ดฌ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Android Studio ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Android ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.


์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • "Flutter ์ค‘๊ธ‰ - ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜"๋ฅผ ๋ดค๊ฑฐ๋‚˜ ๊ทธ์— ์ƒ์‘ํ•˜๋Š” ์ง€์‹์„ ๊ฐ€์ง€๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.


  • Flutter ์ค‘๊ธ‰์ž๊ฐ€ ๋“ค์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

๋กœ๋“œ๋งต

flutter_loadmap

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ํ”Œ๋Ÿฌํ„ฐ๋กœ ์‹ค์ œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž

  • Clean Architecture์™€ MVVM ํŒจํ„ด์„ ์‹ค๋ฌด์— ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž

  • UI/UX๋ฅผ ๊ณ ๋ คํ•œ ์•ฑ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ๋ถ„

  • ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„์— ๊ด€์‹ฌ ์žˆ๋Š” ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Dart ์–ธ์–ด ๊ธฐ์ดˆ ๋ฌธ๋ฒ•

  • Flutter ๊ธฐ๋ณธ ์œ„์ ฏ๊ณผ ๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•œ ์ดํ•ด

  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ ๊ฐœ๋…

์•ˆ๋…•ํ•˜์„ธ์š”
์˜ค์ค€์„์ž…๋‹ˆ๋‹ค.

11,115

๋ช…

์ˆ˜๊ฐ•์ƒ

751

๊ฐœ

์ˆ˜๊ฐ•ํ‰

844

๊ฐœ

๋‹ต๋ณ€

4.7

์ 

๊ฐ•์˜ ํ‰์ 

14

๊ฐœ

๊ฐ•์˜

๊ต์œกํ•˜๊ณ  ์ฑ… ์“ฐ๋Š” ๊ฐœ๋ฐœ์ž ์˜ค์ค€์„์ž…๋‹ˆ๋‹ค.
'์˜ค์ค€์„์˜ ์ƒ์กด์ฝ”๋”ฉ' ์œ ํŠœ๋ธŒ ์ฑ„๋„๊ณผ ์ƒ์กด์ฝ”๋”ฉ (https://survivalcoding.com) ๊ต์œก ํ”Œ๋ž˜ํผ์„ ์šด์˜์ค‘์ž…๋‹ˆ๋‹ค.

์ „๋ฌธ ๋ถ„์•ผ : Android, Flutter

์ €์„œ
์˜ค์ค€์„์˜ ํ”Œ๋Ÿฌํ„ฐ ์ƒ์กด์ฝ”๋”ฉ (ํ•œ๋น›๋ฏธ๋””์–ด 2020)
์˜ค์ค€์„์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์ƒ์กด์ฝ”๋”ฉ: ์ฝ”ํ‹€๋ฆฐ ํŽธ (ํ•œ๋น›๋ฏธ๋””์–ด 2018)
๋  ๋•Œ๊นŒ์ง€ ์•ˆ๋“œ๋กœ์ด๋“œ (๋ฃจ๋น„ํŽ˜์ดํผ 2018)

์ฃผ์š”๊ฒฝ๋ ฅ
์˜ค๋ Œ์ง€(OhRange) ๋Œ€ํ‘œ
์„ธ๋ฏผ์ง์—…์ „๋ฌธํ•™๊ต ์ •๋ณด๊ธฐ์ˆ ๊ฐœ๋ฐœ ์ง์—…ํ›ˆ๋ จ๊ต์‚ฌ
์ˆ˜์›์Šค๋งˆํŠธ์•ฑ๊ฐœ๋ฐœํ•™์› ์šด์˜
LG์ „์ž MC์‚ฌ์—…๋ถ€
์ผ๋ณธ ์•„์ด์น˜ํ˜„ (ๆ ช)ๆฑๆตท็†็ง‘ Security์‚ฌ์—…๋ถ€
์ผ๋ณธ ์•„์ด์น˜ํ˜„ (ๆ ช)ๆ—ฅๆœฌใƒ†ใ‚ฏใ‚ทใƒผใƒ‰ IT์‚ฌ์—…๋ถ€

LinkedIn: https://www.linkedin.com/in/junsuk5/

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

53๊ฐœ โˆ™ (13์‹œ๊ฐ„ 55๋ถ„)

๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

24๊ฐœ

4.8

24๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • Aiden Lee๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    Aiden Lee

    ์ˆ˜๊ฐ•ํ‰ 3

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    ์ˆ˜์ •๋จ

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ํ”Œ๋Ÿฌํ„ฐ๋กœ ๊ตฌํ˜„๋œ ์–ด๋–ค ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธ‰ํ•˜๊ฒŒ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ์ƒํ™ฉ์— ๋†“์—ฌ์„œ ๊ณต์‹๋ฌธ์„œ ์œ„์ฃผ๋กœ ๊ธฐ์ดˆ๋ฅผ ๋น ๋ฅด๊ฒŒ ํ›‘๊ณ  ์ด ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜์—์„œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์šฉํ•˜๋ฉด์„œ ๊ฒฐํ•ฉ๋„ ๋†’์€ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ๊ฐœ์„ ํ–ˆ์–ด์š”. ๋•๋ถ„์— ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์ •๋ฆฌํ•˜๋ฉด์„œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ง€๊ธˆ๋„ ํฐ ๋„์›€์ด ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตณ์ด ์•„์‰ฌ์› ๋˜ ์ ์„ ๋‚จ๊ธฐ๋ฉด, ์ค‘๊ณ ๊ธ‰ ๊ฐ•์˜์ธ ๋งŒํผ ๋‹จ์ˆœ UI ๊ตฌํ˜„์„ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ ๋Œ€์‹  ์ข€๋” ๋‹ค์–‘ํ•œ ๊ตฌํ˜„ ์‚ฌ๋ก€์™€ ํ•จ๊ป˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ๋„ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๋ฉด ๋”ํ•  ๋‚˜์œ„ ์—†์ด ์ข‹์•˜์„ ๊ฒƒ ๊ฐ™์•„์š”. ํ•˜์ง€๋งŒ ์ด ์†Œ๊ฐ์€ ๋‹ค์–‘ํ•œ ์ฃผ์ œ๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ•์‚ฌ๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋“ค์–ด๋ณธ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋А๊ผˆ๋˜ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ์ œ๋ชฉ ๊ทธ๋Œ€๋กœ ์ข‹์€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ณ ๋ฏผํ•˜๋ฉฐ ํ”Œ๋Ÿฌํ„ฐ ์‹ค์ „ ๊ฒฝํ—˜์„ ์ตํžˆ๋Š”๋ฐ๋Š” ์œ ์šฉํ•œ ๊ฐ•์˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค !

    • ๋‘๋‘๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      ๋‘๋‘

      ์ˆ˜๊ฐ•ํ‰ 5

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      ์ •๋ง ๋„์›€์ด ๋งŽ์ด ๋์Šต๋‹ˆ๋‹ค! ํ˜ผ์ž ๊ฐœ๋ฐœ๋งŒ ํ•˜๋ฉด์„œ๋Š” ๋ชฐ๋ž๋˜ ํ”ผ๊ทธ๋งˆ๋ฅผ ์ด์šฉํ•ด์„œ ์–ดํ”Œ์„ ๋งŒ๋“œ๋Š”์ง€ ์ž˜ ์•Œ๋ ค์ค˜์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ํด๋” ๊ตฌ์กฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ฒ•, ๋”ฅ๋งํฌ ๊ตฌํ˜„์— ๊ด€ํ•œ๊ฒƒ๋„ ์ •๋ง ์ข‹์•˜๊ณ ์š”. ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!

      • Nostia๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
        Nostia

        ์ˆ˜๊ฐ•ํ‰ 1

        โˆ™

        ํ‰๊ท  ํ‰์  5.0

        5

        73% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

        ํ•ญ์ƒ ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ ์ด์ „ ๊ฐ•์˜๋“ค์ฒ˜๋Ÿผ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ์‹ค์ œ ์ ์šฉ๋˜๋Š” ์˜ˆ์ œ๊นŒ์ง€ ์žˆ์—ˆ์œผ๋ฉด ๋” ์ข‹์•˜์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์•„์‰ฌ์›€์ด ์กฐ๊ธˆ ๋‚จ์ง€๋งŒ ์ง์ ‘ํ•ด๋ณด๊ฒƒ์œผ๋กœ ์•„์‰ฌ์›€์„ ๋‹ฌ๋ž˜๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋Š˜ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์— ๋” ์ข‹์€ ๊ฐ•์˜๋กœ ์–ผ๋ฅธ ์ฐพ์•„์™€์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ^^!!

        • john snake๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
          john snake

          ์ˆ˜๊ฐ•ํ‰ 1

          โˆ™

          ํ‰๊ท  ํ‰์  5.0

          ์ˆ˜์ •๋จ

          5

          100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

          ์˜ค์ค€์„ ์„ ์ƒ๋‹˜ ๋•๋ถ„์— ์ž‘๋…„์— ์ž…์‚ฌํ•˜์—ฌ ์ด์ œ ์ผ ํ•œ์ง€ 5๊ฐœ์›”์ฐจ ๋œ ํ”Œ๋Ÿฌํ„ฐ ํ˜„์ง์ž์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ๋‹คํŠธ์˜ ์‰ฌ์šด ๋ฌธ๋ฒ•๊ณผ ํ™”๋ คํ•œ ์•ฑ ui๋ฅผ ๋ณด๊ณ  ์ž…๋ฌธํ•˜๋Š”๋ฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ณต์žกํ•ด์ง€๋ฉด ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผํ• ์ง€ ๋ชฐ๋ผ ๊ธˆ๋ฐฉ ํฌ๊ธฐํ•˜๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์ €๋„ ๊ทธ ์ค‘ ํ•œ๋ช…์ด์—ˆ์Šต๋‹ˆ๋‹คใ…  ์ด ๊ฐ•์˜๋Š” ํ”Œ๋Ÿฌํ„ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๊ทธ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋Š” ๋„ˆ๋ฌด๋‚˜ ์†Œ์ค‘ํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ์ž”๊ธฐ์ˆ ์ด ์•„๋‹ˆ๋ผ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์„ ์•Œ๋ ค์ฃผ์‹ญ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌํ„ฐ ๊ฐ•์˜ ์ค‘์—์„œ๋Š” ๊ฐ€์žฅ ๊ทผ๋ณธ์— ๊ฐ€๊นŒ์šด ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ž…๋ฌธ์ž, ํ˜„์ง์ž ๋ถ„๋“ค๋„ ๋Œ์•„๊ฐ€์ง€ ๋ง๊ณ , ํฌ๊ธฐํ•˜์ง€ ๋ง๊ณ , ๋๊นŒ์ง€ ํ˜„์—…์—์„œ ์ƒ์กดํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ ์ด ๊ฐ•์˜๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค!

          • ์†ก์ง„์„ญ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
            ์†ก์ง„์„ญ

            ์ˆ˜๊ฐ•ํ‰ 19

            โˆ™

            ํ‰๊ท  ํ‰์  5.0

            ์ˆ˜์ •๋จ

            5

            100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

            ์šฐ์„  ํ•ด๋‹น ๊ฐ•์˜์— ๋Œ€ํ•ด์„œ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ ๋ฅผ ์ •๋ฆฌํ•ด ๋ณด์ž๋ฉด 1. ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ป๊ฒŒ ์–ดํ”Œ์„ ๋งŒ๋“œ๋Š”์ง€์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค 2. ์ปค์Šคํ…€ ์œ„์ ฏ์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์ง€ ๋”ฅ๋งํฌ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ ํ•˜๋Š”์ง€ ๊ด€ํ•ด์„œ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. 3. ์ „์ฒด์ ์œผ๋กœ ๊ตฌ์กฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์žก๋Š”์ง€์— ๋Œ€ํ•ด์„œ ๋น ๋ฅด๊ฒŒ ๋ณต์Šต ๊ฐ€๋Šฅํ•ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ 1๋ฒˆ์—์„œ๋„ ์–ธ๊ธ‰ํ•œ ํ”ผ๊ทธ๋งˆ๋ฅผ ํ†ตํ•œ ํ˜‘์—…์„ ํ•œ๋‹ค๊ณ  ์ด์•ผ๊ธฐ ๋“ค์—ˆ์„๋•Œ ์–ด๋–ป๊ฒŒ ๋””์ž์ธ์„ ์‹ค์ œ๋กœ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ณผ์ •์ด ๊ถ๊ธˆํ–ˆ๋Š”๋ฐ ๊ทธ๊ฑธ ํ•ด์†Œํ–ˆ๋˜ ์ ์ด ์ œ์ผ ์ข‹์•˜๋˜๊ฒƒ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ข‹์€ ๊ฐ•์˜ ํ•ด์ฃผ์‹  ์„ ์ƒ๋‹˜๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

            ์˜ค์ค€์„๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

            ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

            ๋น„์Šทํ•œ ๊ฐ•์˜

            ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

            ์—ฐ๊ด€ ๋กœ๋“œ๋งต

            ๊ฐ•์˜๊ฐ€ ํฌํ•จ๋œ ๋กœ๋“œ๋งต์œผ๋กœ ํ•™์Šตํ•ด ๋ณด์„ธ์š”!

            ์›” โ‚ฉ24,200

            5๊ฐœ์›” ํ• ๋ถ€ ์‹œ

            โ‚ฉ121,000