์๋ จ์ฃผ์ฐจ ํ ํ๋ก์ ํธ๊ฐ ์ฑ๊ณต๋ฆฌ(?)์ ๋ง๋ฌด๋ฆฌ ๋๋ค.
์ ๋ง ์ฐ์ฌ๊ณก์ ๋์ ํ๊ฐ์ง ๊ธฐ๋ฅ์ ํฌ๊ธฐํ๊ณ ๋ง๋ฌด๋ฆฌ ํ์ง๋ง, ๊ทธ๋๋ ๋ฆ๊ฒ๊น์ง ๊ณต๋ถํ๋ฉฐ ์ป์ ๋ถ๋ถ๋ค์ ๊ธฐ๋กํ๊ณ ์ ํ๋ค.
ํํ์ ์ํด generator๋ฅผ ์ฌ์ฉํ์ง ์๋ค๋ณด๋, Notifier์ Provider์ ๋ํด ํท๊ฐ๋ ธ์๋ค.
์ผ์ผ์ด Provider์ ํ์
๊ณผ ์ ๋ค๋ฆญ ํ์
์ ์ง์ ์ ์ํด ์ฌ์ฉํด์ค์ผ ํ๋ค ๋ณด๋, ์ฌ๋ฌ ๋นจ๊ฐ์ค๋ค์ด ๋ ๋ฐ๊ธธ ๋๋ ์์๋ค.
์ ๋ฆฌํ์๋ฉด, riverpod 3.0์ผ๋ก ๋์ด์ค๋ฉฐ Notifier๋ 3๊ฐ์ง๋ฅผ ์ฌ์ฉํ๋ค.
์ผ๋ฐ์ ์ธ ๋๊ธฐ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ViewModel์๋ Notifer๋ฅผ ์ฌ์ฉํ๋ค.
buil() ๋ฉ์๋์์ return ๊ฐ์ผ๋ก ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํ๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ์ํ๊ฐ ์ด๊ธฐํ๋์ง ์๊ณ ๋ฉ์๋ ๋ด์์ state๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋น์ฐํ๊ฒ ์ง๋ง, error๊ฐ ๋ฐ์ํ๋ค.
AysncNotifier๋ ๋น๋๊ธฐ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ Notifier์ด๋ค.
build() ๋ฉ์๋๋ก AsyncValue๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, return ํ์
์ FutureOr ํ์
์ด๋ค.
View๋จ์์ when ๋ฉ์๋๋ก data,loading,error ๊ด๋ฆฌ๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
์คํธ๋ฆผ ๊ธฐ๋ฐ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ Notifier์ด๋ค.
build()์์ Stream ํ์
์ ๋ฐํํ๋ฉฐ, ์ง์์ ์ธ ๋ฐ์ดํฐ์ ํ๋ฆ์ ๊ด๋ฆฌํ ์ ์๋ค.
์ฝ๊ธฐ ์ ์ฉ ๊ฐ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
์ด๋ฒ ํ๋ก์ ํธ์์๋ Repository์์ ์์กด์ฑ ์ฃผ์
์ ์ํด ์ฌ์ฉํ๋ค.
Notifier ๊ธฐ๋ฐ ๋๊ธฐ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ด๋ฆฌ์์ด๋ค.
read์ watch๋ฅผ ํตํด ๋ก์ง๊ณผ ์ํ๋ฅผ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
๋น๋๊ธฐ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ด๋ฆฌ์์ด๋ฉฐ, ๋ก์ง ๋ฐ ์ํ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค
์ญ์, ๋น๋๊ธฐ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค.
Stream์ด๋ฏ๋ก ์ง์์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ด๋ฆฌํ๋ ๊ด๋ฆฌ์์ด๋ค.
GeoLocator ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ํ์ฌ ์์น์ ์ ๋ณด๋ฅผ ์ฝ์ด์ฌ ์ ์์๋ค.
์ขํ๊ฐ์ double ํ์
์ ๊ฒฝ๋์ ์๋๊ฐ ๋ํ๋๋ฉฐ, ์์น๊ถํ ์ค์ ์ด ํ์ํ๋ค.
์ดํ, Vworld์ api๋ฅผ ์ด์ฉํด ๋ํ๋ฏผ๊ตญ ๋ด ์์น๋ฅผ ๊ฒ์ํ ์ ์๋๋ฐ, ์ด๋ฆ์ ํตํ ๊ฒ์๊ณผ ์๋, ๊ฒฝ๋๋ฅผ ํตํ ๊ฒ์์ ํ ์ ์๋ค.
์ด๋ฒ ํ๋ก์ ํธ์์๋ Lat, Lng ๊ฐ์ ํตํด ํ์ฌ ์์น์ ์๋ฉด๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์๋ค.
๋ค์์ฃผ๋ ๋ณต์ต์ ๋งค์งํ ์์ ์ธ๋ฐ, ๊ฒ์์ ํตํ ์๋ฉด๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์๋ณผ ์์ ์ด๋ค.
์์ผ๋ก๋ ํ์ดํ
..!