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

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

์ˆ™๋ จ์ฃผ์ฐจ ํŒ€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์„ฑ๊ณต๋ฆฌ(?)์— ๋งˆ๋ฌด๋ฆฌ ๋๋‹ค.
์ •๋ง ์šฐ์—ฌ๊ณก์ ˆ ๋์— ํ•œ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํฌ๊ธฐํ•˜๊ณ  ๋งˆ๋ฌด๋ฆฌ ํ–ˆ์ง€๋งŒ, ๊ทธ๋ž˜๋„ ๋Šฆ๊ฒŒ๊นŒ์ง€ ๊ณต๋ถ€ํ•˜๋ฉฐ ์–ป์€ ๋ถ€๋ถ„๋“ค์„ ๊ธฐ๋กํ•˜๊ณ ์ž ํ•œ๋‹ค.

๐Ÿ”Ž Notifier์™€ Provider - 2๏ธโƒฃ

ํŒ€ํ”Œ์„ ์œ„ํ•ด generator๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋‹ค๋ณด๋‹ˆ, Notifier์™€ Provider์— ๋Œ€ํ•ด ํ—ท๊ฐˆ๋ ธ์—ˆ๋‹ค.
์ผ์ผ์ด Provider์˜ ํƒ€์ž…๊ณผ ์ œ๋„ค๋ฆญ ํƒ€์ž…์„ ์ง์ ‘ ์ •์˜ํ•ด ์‚ฌ์šฉํ•ด์ค˜์•ผ ํ•˜๋‹ค ๋ณด๋‹ˆ, ์—ฌ๋Ÿฌ ๋นจ๊ฐ„์ค„๋“ค์ด ๋‚  ๋ฐ˜๊ธธ ๋•Œ๋„ ์žˆ์—ˆ๋‹ค.

์ •๋ฆฌํ•˜์ž๋ฉด, riverpod 3.0์œผ๋กœ ๋„˜์–ด์˜ค๋ฉฐ Notifier๋Š” 3๊ฐ€์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

1๏ธโƒฃ Notifier

์ผ๋ฐ˜์ ์ธ ๋™๊ธฐ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ViewModel์—๋Š” Notifer๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
buil() ๋ฉ”์„œ๋“œ์—์„œ return ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ ์ƒํƒœ๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๊ณ  ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ state๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋‹น์—ฐํ•˜๊ฒ ์ง€๋งŒ, error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

2๏ธโƒฃ AsyncNotifier

AysncNotifier๋Š” ๋น„๋™๊ธฐ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Notifier์ด๋‹ค.
build() ๋ฉ”์„œ๋“œ๋กœ AsyncValue๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, return ํƒ€์ž…์€ FutureOr ํƒ€์ž…์ด๋‹ค.
View๋‹จ์—์„œ when ๋ฉ”์„œ๋“œ๋กœ data,loading,error ๊ด€๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

3๏ธโƒฃ StreamNotifier

์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Notifier์ด๋‹ค.
build()์—์„œ Stream ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์ง€์†์ ์ธ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

1๏ธโƒฃ Provider

์ฝ๊ธฐ ์ „์šฉ ๊ฐ’์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Repository์—์„œ ์˜์กด์„ฑ ์ฃผ์ž…์„ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ๋‹ค.

2๏ธโƒฃ NotifierProvider

Notifier ๊ธฐ๋ฐ˜ ๋™๊ธฐ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ด€๋ฆฌ์ž์ด๋‹ค.
read์™€ watch๋ฅผ ํ†ตํ•ด ๋กœ์ง๊ณผ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

3๏ธโƒฃ AsyncNotifierProvier

๋น„๋™๊ธฐ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ด€๋ฆฌ์ž์ด๋ฉฐ, ๋กœ์ง ๋ฐ ์ƒํƒœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

4๏ธโƒฃ StreamNotifierProvider

์—ญ์‹œ, ๋น„๋™๊ธฐ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
Stream์ด๋ฏ€๋กœ ์ง€์†์ ์ธ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ด€๋ฆฌ์ž์ด๋‹ค.

๐Ÿ”Ž GeoLocator ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - 2๏ธโƒฃ

GeoLocator ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์œ„์น˜์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
์ขŒํ‘œ๊ฐ’์€ double ํƒ€์ž…์˜ ๊ฒฝ๋„์™€ ์œ„๋„๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉฐ, ์œ„์น˜๊ถŒํ•œ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.

์ดํ›„, Vworld์˜ api๋ฅผ ์ด์šฉํ•ด ๋Œ€ํ•œ๋ฏผ๊ตญ ๋‚ด ์œ„์น˜๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ฆ„์„ ํ†ตํ•œ ๊ฒ€์ƒ‰๊ณผ ์œ„๋„, ๊ฒฝ๋„๋ฅผ ํ†ตํ•œ ๊ฒ€์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Lat, Lng ๊ฐ’์„ ํ†ตํ•ด ํ˜„์žฌ ์œ„์น˜์˜ ์๋ฉด๋™ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™”๋‹ค.

๋‹ค์Œ์ฃผ๋Š” ๋ณต์Šต์— ๋งค์ง„ํ•  ์˜ˆ์ •์ธ๋ฐ, ๊ฒ€์ƒ‰์„ ํ†ตํ•œ ์๋ฉด๋™ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€๋ณผ ์˜ˆ์ •์ด๋‹ค.
์•ž์œผ๋กœ๋„ ํ™”์ดํŒ…..!

profile
์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž

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