2023. 06
Last updated
Last updated
Flutter Advanced Course - Clean Architecture With MVVM ๊ฐ์ ๋ ธํธ ์ด์ ๋ฐ ๋ณต์ต
์ฑ ์์ ๋ ํฌ์งํ ๋ฆฌ ๋ฐ ํ๋ก์ ํธ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋ ์์
Flutter Complete Guide ๋ฐ Flutter In Action ๊ฐ์๋ ธํธ ์ ์ฒด ๋ณด๊ณ ํ์ํ ํ ํฝ๋ค๋ง ๋ฝ์์ Flutter ํ ํฝ์ผ๋ก ์ด์ ์ํค๊ธฐ
ํ๋ฉด ํ๋ก์ฐ ์ ์ฒด ํ์ดํธ ๋ณด๋์ ๊ทธ๋ ค๋ณด๊ธฐ. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ ์คํฌ๋ฆฐ์ท ๋จ๊ธฐ๊ธฐ.
์ฑ ์์ ๋จ์ ์ชผ๊ฐ์ ์ง๋ผ ์นด๋์ ์์ธํ๊ฒ ๊ธฐ๋ก
์ง๋ผ ์นด๋์ ์์ ๋จ์ ์์ธํ ์๋ฃ๋๋ฉด ์ฌ๊ธฐ์๋ ํ๋ก์ ํธ TODO ๋ฆฌ์คํธ์
ํ์ต ๋ฐฑ๋ก๊ทธ ์ฐ์ ์์ ์กฐ์ ๋ฐ ์์ฑ
JPA ํ์ฉ 2 ๊ฐ์๋ ธํธ ์ด์ ๋ฐ ๋ณต์ต
presentation layer ์ ์
view : ๊ธฐ๋ณธ screen ์์ฑ ๋ฐ ๋ผ์ฐํฐ ์ค์ , ์ง๊ธ ๋น์ฅ ์์ ์ด๋ ค์ด ๋ถ๋ถ์ ๋ฐฑ๋ก๊ทธ๋ก ๋ฆฌ์คํธ์ ํ๊ณ ๋๋จธ์ง ํ๋ฉด ์ ์ฒด ๋ํ ์ผ๊น์ง ์์ ์๋ฃ
viewmodel : bloc ์ ์, state ์ ์, event ์ ์, ์ด๋ฒคํธ ๋ฐ์์ ๋ฐ๋ฅธ ์ํ๊ด๋ฆฌ ๋ฐ ํ๋ฉด ์ด๋ ๋ชจ๋ ๊ตฌํ
UserDataSource ๋ฐ UserRepository ๊ตฌํ
๋ก๊ทธ์ธ(์๋ฒ์์ ํ ํฐ ๋ฐ์์์ ๊ฐ์๋ผ์์ผํจ)
apiclient ์์ ํด๋ฆฐ์ฝ๋ ๊ฐ์ ๋ฐฉ์๋๋ก either ์ ์ฉ
internet connection check ๊ด๋ จ ์ฒ๋ฆฌ
splash ๋ด ์๋ฌ ๊ด๋ จ ์ฒ๋ฆฌ
presentation layer - resources ์ ์ฒด (theme_manager ์์ฑ)
presentation layer(์ฐ๊ธฐ)
view(์ฐ๊ธฐ)
๊ธฐ๋ณธ screen ์์ฑ ๋ฐ ๋ผ์ฐํฐ ์ค์
ํ๋ฉด ๋ฐฑ๋ก๊ทธ ์์ด ๊ตฌํ ์๋ฃ(์ฐ๊ธฐ)
viewmodel
bloc, state, event ์ ์
data layer
ํ์ํ๋ฐ์ดํฐ request, response ํ์ ๊ฒฐ์
mock ๊ธฐ์ค์ผ๋ก datasource ์ฝ๋ ์ฒ๋ฆฌ
presentation layer - data layer
action ๋ณ bloc ์ํ ๊ด๋ฆฌ ์ฒ๋ฆฌ ๊ตฌํ
๋ค๊ตญ์ด ์ฒ๋ฆฌ grmc ์ ๊ตฌํ
Scaffold ๊ณตํตํ ๊ด๋ จ ๊ธฐ์กด ํ๋ก์ ํธ ์ฐธ๊ณ ํ์ฌ grmc ์ ๊ตฌํ (์ผ๋จ์ scaffold ๋ ๊ณตํตํํ์ง ์๊ณ ๋ฐ๋ก ํ๋ฉด ์ธ ๊ฐ์ ๋ ๊ตฌํ ํ์ ๋ค์ ํ๋จํ์)
lottie ๋ก๋ฉ ๊ด๋ จ widget archive ๋ณด๊ณ grmc ์ ๊ตฌํ (์ผ๋จ์ ์ด๋ค ๋กํฐ ์ด๋ฏธ์ง ์ธ ๊ฒ์ธ๊ฐ๋ ๊ฒฐ์ ์ ๋์ค์ผ๋ก ๋ฏธ๋ฃจ๊ณ ์ง๊ธ์ ์์ ์ ๊ตฌํํ๋๊ฑธ ๊ทธ๋ฅ ์ฌ์ฉํ๋๋ก ํ๋ค)
theme data ํ ํ๋ฆฟ ๊ตฌํ
NEXTSTEP ๊ด๋ จ ์ ๋ฆฌ ๋ ธํธ ์ฎ๊ธฐ๊ธฐ
์ธํ๋ผ๊ณต๋ฐฉ
DDD ์ธ๋ ๋๋ฐ
ํด๋ฆฐ์ฝ๋
๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด ์ฑํฐ ํ๋
๋ฐฑ๋ก๊ทธ ์ ์ฒด ์ ๊ฒ ๋ฐ ์ฐ์ ์์ ์กฐ์
dribble ํ ํ๋ฆฟ ๊ฒํ
ํฐํธ ๊ด๋ จ ์์น ๋ฐ ์ ์ฉ
presentation layer
view
ํ๋ฉด ๋ฐฑ๋ก๊ทธ ์์ด ๊ตฌํ ์๋ฃ
๋ฒ๊ทธ ํฝ์ค ๋ฐ ๋ฆฌํฉํ ๋ง
๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด CH06 ์ ๋ฆฌ
์ํ๋ฆฌํฐ ์ผ๋ถ
์จ๋ณด๋ฉ ํ์ด์ง๋ทฐ ๊ตฌ์กฐ ์ค๊ณ ๋ฐ bloc ์ ์ฒด ์ ์
์ํ๋ฆฌํฐ ๊ด๋ จ ์ ๋ฆฌ
์จ๋ณด๋ฉ ์๋ฃ(๋ด์ผ๋ก ์ฐ๊ธฐ, ๊ธฐํ ๋ณด๊ฐ ํ์ํ๋ฉฐ ํ์ ์คํฌ๋ฆฐ ๋ชจ๋ ์์
์๋ฃ)
์ํ๋ฆฌํฐ ์ ๋ฆฌ ์๋ฃ(1h ์์ ๋๋ด๊ธฐ)
๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด ์ ๋ฆฌ ์๋ฃ
๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด CH07
progress bar widget
onboarding - name screen
onboarding - birthday screen
onboarding - gender screen
์ํ๋ฆฌํฐ ์๊ฐ
๋ ์๋ฐ ~, JVM ๋ณต์ต
๋ ์๋ฐ ~, ๋ฐ์ดํธ ์ฝ๋ ๋ณต์ต
๋ ์๋ฐ ~, ๋ฆฌํ๋ ์ ๋ณต์ต
๊ณผ๊ฑฐ ์ ๋ฆฌ๋ ธํธ ๋๋ฝ์ฌํญ ์ ์ฒด ์ ๊ฒ ๋ฐ ๋ฐฑ๋ก๊ทธ ์ฐ์ถ
์ฟ ๋ฒ๋คํฐ์ค ์์ํ๊ธฐ ์ ๋ฆฌ
๊ฒํ ์๋ ๊ณผ๊ฑฐ ์ ๋ฆฌ๋ ธํธ ๊ฒํ ๋ฐ ํ์ (java enum, reactive streams ์๋ฆฌ, checked exception)
๋ ์๋ฐ ~, ๋ค์ด๋๋ฏน ํ๋ก์
๊ธฐ์กด ์๋น์ค ๋ค์ ๋ถ์ - A
๋ ์๋ฐ ~, mokito
๊ธฐ์กด ์๋น์ค ๋ค์ ๋ถ์ - B(~10:00)
GRMC ๋ฌธ์ํ ์ ์ฒด ์ฌ์ ๊ฒ(10:00 ~ )
์๋น์ค ํ ๋ฌธ์ฅ์ผ๋ก ์ ์. ์ ๋ฌ ํต์ฌ. ์ฝ์ด ๊ธฐ๋ฅ ์ ์, ๋ถ๊ฐ ๊ธฐ๋ฅ ์ ์ (ํ ์คํธ)
A,B ๋ถ์ํ ์์ ๊ทธ๋๋ก GRMC ๋ฌธ์ํ(์ธ๋ถ๊ธฐ๋ฅ ํฌํจ)(~12:00)
์ ์๋ ์๋น์ค ํต์ฌ๊ณผ ์ฝ์ด, ๋ถ๊ฐ ๊ธฐ๋ฅ๋ค ๊ธฐ์ค์ผ๋ก ํ๋ฉด ํ๋ก์ฐ ๋ค์ ์ค์ (~14:30)
DDD ์ ๊ฐ ๋๋ฉ์ธ ๋ชจ๋ธ๋ง ๋ค์ ์์ฑ (~17:00)
ํ๋ฉด ํ๋ก์ฐ ์์ ๋ฐ์(์์ ์น ์๋ก ๋ค์ ๊ทธ๋ฆฌ๋๊ฐ, ๊ธ๋ฐฉํจ)
์จ๋ณด๋ฉ(ํ๋กํ)์์ ํ์ผ๋ก ์ด๋ ํ์ดํ ์ถ๊ฐ
๋ผ์ด์ง์ ํ, ์ง๋ฌธ, ์ธ์ฆ ๋ค ์ง์ฐ๊ณ ๋ผ์ด์ง ์์ฒด์์ ํํฐ ์ ๊ณต(์ผ๋ฐ, ์ง๋ฌธ, ์ธ์ฆ)
๋ผ์ด์ง์ ํ์์ ํฌ์คํ ์์ธ ํ๋ฉด ์ด๋
๋ด๊ฐ ์ด ๊ธ์์ ๊ฒ์๊ธ ์์ธ ํ์ดํ ์ง์ฐ๊ณ ๋ด๊ฐ ์ด ๊ธ์์ ํญ ๋๊ฐ๋ก ์ชผ๊ฐ์ ๊ทธ๋ฃน ๊ฒ์ํ, ๋ผ์ด์ง๋ก ๋ถ๋ฆฌ (19:30 ~ 21:00)
๋ ์๋ฐ~, ๋์ปค์ ํ ์คํธ(~21:50)
๋ ์๋ฐ~, ์ฑ๋ฅ ํ ์คํธ(09:30 ~ 12:30)
GRMC ๊ด๋ จ ๊ธฐํ ๋ฐ ๋์์ธ, ๋๋ฉ์ธ ๋ชจ๋ธ๋ง
๋ ์๋ฐ~, ์ด์ ์ด์ ํ ์คํธ(09:30 ~ 12:30)
GRMC ๊ธฐํ ๋ฐ ๋์์ธ ๊ด๋ จ ๋ฐฑ๋ก๊ทธ ์ฒ๋ฆฌ(~16:30)
๋ ์๋ฐ~, ์ํคํ ์ฒ ํ ์คํธ(9:30 ~ 11:00)
GRMC ๊ธฐํ ๋ฐ ๋์์ธ ๊ด๋ จ ๋ฐฑ๋ก๊ทธ ์ฒ๋ฆฌ(~16:20)
(+) intellij ๊ด๋ จ ์ค๋ฅ ์์ (์ด์)
์ฑ - ์คํ๋์ ()
์ฑ - ๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์
()(์ฐ๊ธฐ)
์ฑ - ๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์ ()