[WIL] ์˜์А๋žญ ๐Ÿ’ซ, ์ฃผ๊ฐ„ ํ•™์Šต๋Ÿ‰ ์ด์ •๋ฆฌ

๊น€์˜๊ด‘ยท2026๋…„ 1์›” 15์ผ

โญ riverpod : 2๏ธโƒฃ

riverpod ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ํ•™์Šตํ•œ์ง€ ๋ฒŒ์จ ์•ฝ 2์ฃผ๊ฐ€ ํ˜๋ €๋‹ค.
๊ฐœ์ธ ๊ณผ์ œ ์‹œ์ž‘ ์ „, provider๋ฅผ ์ ‘ํ•œ ๋’ค ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๊ธˆ๋ฐฉ ์ ์‘ํ•  ์ˆ˜ ์žˆ์„ ์ค„ ์•Œ์•˜๋‹ค.

Provider์™€์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ์ƒํƒœ๋ฅผ ํ•˜๋‚˜๋ฐ–์— ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์—†๊ธฐ์— ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ•„์š”ํ•˜๋‹ค.
๋˜ ๋‹ค๋ฅธ ์ฐจ์ด์ ์œผ๋กœ๋Š” Provider๋ผ๋ฆฌ ref๋ฅผ ํ†ตํ•ด ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ, ์ฃผ์š” logic์„ ์œ„์ฃผ๋กœ viewmodel์„ ๋ถ„๋ฅ˜ํ•˜๊ณ  ํ•ด๋‹น logic๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

์ฃผ์˜ํ•  ์ ์œผ๋กœ๋Š” provider์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์ฐธ์กฐ ์นด์šดํŒ… ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค.
Generator๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, autoDispose ๊ธฐ๋Šฅ์œผ๋กœ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์•Œ์•„์„œ ๊ด€๋ฆฌํ•ด์ฃผ์ง€๋งŒ, ๋ ˆ๊ฑฐ์‹œ ๋ฐฉ์‹์„ ์„ ํƒํ–ˆ๋‹ค๋ฉด ์ƒํƒœ์˜ ์ดˆ๊ธฐํ™”๊ฐ€ ์–ธ์ œ ๋˜๋Š”์ง€ ์ž˜ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

  1. Provider๋Š” ์„ ์–ธ๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ”๋กœ ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๋Š”๋‹ค.
    ๋‹จ์ˆœ class ์ •์˜์ด๊ธฐ ๋•Œ๋ฌธ์— UI์—์„œ wacth๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น Provider๋ฅผ ์ฒ˜์Œ ์ฐธ์กฐํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋œ๋‹ค.

  2. ์ดํ›„, Provider๋Š” ์ž์‹ ์—๊ฒŒ ๋นจ๋Œ€ ๊ฝ‚์€, ์ฆ‰ ์ž์‹ ์„ ์ฐธ์กฐ ์ค‘์ธ ๋ฆฌ์Šค๋„ˆ์˜ ์ˆ˜๋ฅผ ๊ธฐ์–ตํ•œ๋‹ค.
    watch๋ฅผ ํ†ตํ•ด ๊ตฌ๋…์ค‘์ด๊ฑฐ๋‚˜ ์ฐธ์กฐ์ค‘์ธ Provider๊ฐ€ ์žˆ๋‹ค๋ฉด ์ƒ๋ช…์€ ์œ ์ง€๋œ๋‹ค.

  3. Provider๋ฅผ watchํ•˜๋˜ ๋งˆ์ง€๋ง‰ ์œ„์ ฏ์ด dispose ๋  ๋•Œ, ๊ฐ™์ด dispose ๋œ๋‹ค.

์ฐธ๊ณ ๋กœ read๋Š” ์ƒ๋ช…์ฃผ๊ธฐ์™€๋Š” ๊ด€๊ณ„์—†์ด ํŒŒ๊ดด๋  ์ˆ˜ ์žˆ๋‹ค.
๋‹ค์‹œ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ฐธ์กฐ๋˜๋ฉด ์ดˆ๊ธฐํ™”๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘๋œ๋‹ค.

โญ Widget , Element, Render : 2๏ธโƒฃ

๋‚ด๊ฐ€ ์ ๋Š” ๊ฑด ๋‹จ์ง€ class๋“ค์ธ๋ฐ ์–ด๋–ป๊ฒŒ ๋””๋ฐ”์ด์Šค์˜ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์„๊นŒ?
๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํŠœํ„ฐ๋‹˜์„ ์ฐพ์•„๊ฐ”๋‹ค.

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, Widget Tree, Elemenet Tree, RenderObject Tree๋Š” ๊ฐœ๋ฐœ์ž์˜ ์†์—์„œ๋ถ€ํ„ฐ ๋‹จ๊ณ„๋ณ„๋กœ ๊ฑฐ์ณ๊ฐ„๋‹ค.

Widget๋Š” ์„ค๊ณ„ ๋‹จ๊ณ„์ด๋‹ค.
์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด Widget์€ Tree์— ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค.
์ตœ์ƒ์œ„ MaterialApp๋ถ€ํ„ฐ ๊ฐ Page๊ฐ€ ์œ„์น˜ํ•˜๊ฒŒ ๋˜๋ฉฐ, ์—ฌ๊ธฐ์„œ Widget์€ ๋‹ค์‹œ ํ™”๋ฉด์— ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ์œ„์ ฏ๊ณผ ์—†๋Š” ์œ„์ ฏ์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

Element๋Š” ์„ค๊ณ„๋„์— ๋ฌด์—‡์„ ๋ผ์›Œ๋„ฃ์„์ง€ ๊ณ ๋ฏผํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค.
Widget์— ๋Œ€ํ•œ ์‹ค์งˆ์ ์ธ ์ •๋ณด(BuildContext)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๋งŒ์•ฝ Widget Tree์—์„œ Key ๊ฐ’๊ณผ RuntimeType์ด ๋‹ค๋ฅธ Widget์ด ๋ฐœ๊ฒฌ๋˜๋ฉด rebuild๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Element๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.
์ถ”๊ฐ€์ ์œผ๋กœ, RenderObject Element๋Š” Render Tree๋กœ ๋„˜๊ธด๋‹ค.

Render Tree์—์„œ๋Š” Element Tree์—์„œ ๋„˜๊ฒจ๋ฐ›์€ Object๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž์ฒด ๊ทธ๋ž˜ํ”ฝ ์—”์ง„์„ ์ด์šฉํ•ด ํ™”๋ฉด์„ ์ผ๋ถ€ ์™„์„ฑํ•œ ๋’ค, ๊ทธ๋ฆฌ์ง€ ๋ชปํ•œ ๋ถ€๋ถ„์˜ ์ •๋ณด์™€ ํ•จ๊ป˜ iOS์™€ Android์—๊ฒŒ ๋„˜๊ธด๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ํ•™์Šต ํ•  ๊ฒƒ๋“ค

  • DIO ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • REST API Docker ํ†ตํ•ด ๋ฐ›์•„์˜ค๊ธฐ
  • Web Socket
profile
์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€