Inflearn brand logo image
Inflearn brand logo image
์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

Flutter ์ค‘๊ธ‰ 3ํŽธ - ์˜์กด์„ฑ ์ฃผ์ž… ๊ฐ€์ด๋“œ

Flutter์—์„œ ์ œ๋Œ€๋กœ ๋œ ์˜์กด์„ฑ ์ฃผ์ž… ๊ฐ€์ด๋“œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. injectable ํŒจํ‚ค์ง€๋ฅผ ํ™œ์šฉํ•˜๋Š” DI ํ™œ์šฉ๋ฒ•์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค

Thumbnail

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

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

  • ์˜์กด์„ฑ ์ฃผ์ž…์˜ ๊ฐœ๋…๊ณผ ํ™œ์šฉ ๋ฐฉ๋ฒ•

  • get_it, injectable ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž… ๋ฐฉ๋ฒ•

๋ณต์žกํ•œ ์˜์กด์„ฑ ๋ฌธ์ œ, ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• 
Flutter ์˜์กด์„ฑ ์ฃผ์ž… ๊ฐ€์ด๋“œ 

์ ์  ๋ณต์žกํ•ด์ง€๋Š” ์˜์กด์„ฑ ๋ฌธ์ œ ๐Ÿšจ

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

DI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๐Ÿ“–

ํ”Œ๋Ÿฌํ„ฐ์—๋Š” DI(์˜์กด์„ฑ ์ฃผ์ž…)๋ฅผ ๋„์™€์ฃผ๋Š” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ฐ•์˜์—์„œ๋Š” ํŠน์ • ์ƒํƒœ๊ด€๋ฆฌ ๋„๊ตฌ์— ์˜์กดํ•˜์ง€ ์•Š๋Š” Injectable ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 

๊ฐ•์˜์—์„œ ์“ฐ๋Š” Injectable ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์ด ๊ฐ•์˜๋ฅผ ๋“ค์–ด์•ผ ํ•˜๋Š” ๋ถ„ ๐Ÿ™†โ€โ™€๏ธ

์ง€๊ธˆ๊นŒ์ง€์˜ DI ์„ค์ •์ด ๋‹ค์Œ ์ฝ”๋“œ์™€ ๋น„์Šทํ•˜๊ฑฐ๋‚˜ ์ด๋ณด๋‹ค ๋ชปํ•˜๋‹ค๋ฉด ์ด ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋‚˜๋ฉด!

  • โœ… ์ด ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๊ณ  ๋‚˜๋ฉด ์œ„์™€ ๊ฐ™์ด ์‚ฌ๋žŒ์ด ์ง์ ‘ DI๋ฅผ ํ•˜๋Š” ์ฝ”๋“œ๋Š” ์ œ๊ฑฐ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • โœ… ์ ์ ˆํ•œ ์‹œ์ ์— ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

DI๊ฐ€ ์™œ ํ•„์š”ํ•œ์ง€์— ๋Œ€ํ•œ 
๊ด€์ ์„ ์ œ์‹œํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด์ „ ๊ฐ•์˜๋“ค์—์„œ ๋‹ค๋ฃจ์—ˆ๋˜ ์˜ˆ์ œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‹œ๊ฐ์—์„œ ์žฌ์ž‘์„ฑํ•˜๋ฉด์„œ DI ์˜ ํ•„์š”์„ฑ์„ ๋Š๊ปด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋ฆฌํŒฉํ† ๋งํŽธ ๐Ÿ“š

๐Ÿ’ก 'Flutter ์ค‘๊ธ‰ 1ํŽธ - ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜'์—์„œ ์ž‘์„ฑํ–ˆ๋˜ ๋…ธํŠธ ์•ฑ์˜ ๋ฌธ์ œ์ ์„ ์ง„๋‹จํ•˜๊ณ  ๋ฆฌํŒฉํ† ๋งํ•ฉ๋‹ˆ๋‹ค.

์†Œ๊ทœ๋ชจ ์•ฑ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ๋Š” ์•„๋ฌด ์ƒ๊ฐ ์—†์ด ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์‹ฑ๊ธ€ํ„ด์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ค‘๊ฐ„ ๊ทœ๋ชจ ์ด์ƒ์˜ ์•ฑ์—์„œ๋Š” ๋ฐ”๋žŒ์งํ•œ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ์กด ์•ฑ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๋ฉด์„œ ํ•ด๋‹น ๋ฌธ์ œ์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

  • 'Flutter ์ค‘๊ธ‰ 1ํŽธ - ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜' ์†Œ์Šค๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์ถœ๋ฐœํ•˜๋Š” ๋ฆฌํŒฉํ† ๋ง ์ฝ”์Šค์ž…๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๋ฉด์„œ ๋” ๋‚˜์€ ์ฝ”๋“œ๋กœ ์ˆ˜์ •ํ•ด ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

์žฌ์ž‘์„ฑํŽธ ๐Ÿ“š

๐Ÿ’ก 'Flutter ์‘์šฉ - ๋งˆ์Šคํฌ ์ •๋ณด ์•ฑ'์—์„œ MVVM ์œผ๋กœ ์ž‘์„ฑํ–ˆ๋˜ ๋งˆ์Šคํฌ ์ •๋ณด ์•ฑ์„ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ๋ฐ DI๋ฅผ ์ ์šฉํ•˜์—ฌ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ๋ด…๋‹ˆ๋‹ค.

์•ฑ์„ ๋งŒ๋“ค ๋•Œ ์„ธ๋ถ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š๋ผ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์ด ๋”œ๋ ˆ์ด๋œ ๊ฒฝํ—˜์ด ์žˆ๋‚˜์š”? ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์™€ DI๋ฅผ ๊ณ ๋ คํ•œ ๋ฐฉ์‹์œผ๋กœ '๋งˆ์Šคํฌ ์žฌ๊ณ ' ์•ฑ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ด ๋ณด๋ฉด์„œ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ๋ฐฉ์‹์„ ๊ฒฝํ—˜ํ•ฉ๋‹ˆ๋‹ค.

DI๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ Mockingํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์•ฑ์„ ๋งŒ๋“ค๊ณ  ๋‚˜์ค‘์— ์‹ค์ œ ๋ฐ์ดํ„ฐ๋กœ ์‰ฝ๊ฒŒ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฒ˜์Œ์—๋Š” ๊ฐ€์งœ ๊ฐ์ฒด๋ฅผ ํ† ๋Œ€๋กœ Testํ•˜๋ฉด์„œ ์•ฑ์„ ๊ฐœ๋ฐœํ•ด ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.
  • ์•ฑ ์™„์„ฑ ํ›„ DI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง„์งœ ๋ฐ์ดํ„ฐ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

[์˜ค์ค€์„์˜ ํ”Œ๋Ÿฌํ„ฐ ์•ฑ ๊ฐœ๋ฐœ ์‹œ๋ฆฌ์ฆˆ] ๊ฐ•์˜ ์„ ํƒ ๊ฐ€์ด๋“œ ๐Ÿ‘€

๋ณธ์ธ์ด ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๊ฐ•์˜๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์„ธ์š”.
(ํด๋ฆญํ•˜๋ฉด ์ด๋ฏธ์ง€๋ฅผ ์ƒˆ์ฐฝ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)


์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ ๐Ÿ“ข

๋ณธ ๊ฐ•์˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

  • ์šด์˜ ์ฒด์ œ ๋ฐ ๋ฒ„์ „(OS): macOS ํ™˜๊ฒฝ์—์„œ ์•ˆ๋“œ๋กœ์ด๋“œ๋ฅผ ํƒ€๊ฒŸ
  • ์‚ฌ์šฉ ๋„๊ตฌ: Android Studio Flamingo ์ด์ƒ, Flutter 3, Dart 3 ์ด์ƒ

ํ•™์Šต ์ž๋ฃŒ

  • ๋ฆฌํŒฉํ† ๋งํŽธ์„ ์œ„ํ•ด ์‹œ์ž‘ ์ฝ”๋“œ์˜ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์žฌ์ž‘์„ฑํŽธ์€ ์™„์„ฑ๋œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

  • MVVM, ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ ํ–‰ ํ•™์Šตํ•œ ์ค‘๊ธ‰์ž ์ฝ”์Šค์ž…๋‹ˆ๋‹ค.

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

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

  • Flutter ์—์„œ ์˜์กด์„ฑ ์ฃผ์ž… ๋ฐฉ๋ฒ• ๊ฐ€์ด๋“œ๋ฅผ ์•Œ๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • ์˜์กด์„ฑ ์ฃผ์ž…์‹œ ์žฅ์ ์„ ์•Œ๊ณ  ์‹ถ์œผ์‹  ๋ถ„

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

  • Flutter ์ค‘๊ธ‰ - ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ๊ฐ•์˜ ํ•™์Šต์ž

  • MVVM, ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ๊ฒฝํ—˜์ž

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

10,383

๋ช…

์ˆ˜๊ฐ•์ƒ

689

๊ฐœ

์ˆ˜๊ฐ•ํ‰

816

๊ฐœ

๋‹ต๋ณ€

4.7

์ 

๊ฐ•์˜ ํ‰์ 

13

๊ฐœ

๊ฐ•์˜

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

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

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

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

๋”๋ณด๊ธฐ

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

์ „์ฒด

29๊ฐœ โˆ™ (3์‹œ๊ฐ„ 22๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

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

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!