CH02 Bloc Overview





















๋ค์์ Bloc ์ ๊ตฌ๋ ํ์ฌ ์ด ๊ฒฐ๊ณผ๋ค์ ๋ณตํฉ์ ์ผ๋ก ์ฐธ์กฐํ์ฌ ์๋ก์ด ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ผํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด MultiBlocListener๋ฅผ ์ฌ์ฉํ ์ ์๋ค.







๋ค์์ BlocBuilder, BlocConsumer, BlocListener ์ ์ฐจ์ด์ ๊ดํ ๋ด์ฉ์ด๋ค.
Flutter์์ ์ฌ์ฉ๋๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Bloc ํจํด์์, UI์ ์ํ๊ด๋ฆฌ ๋ธ๋ก(Bloc) ๊ฐ์ ์ํธ์์ฉ์ ๋๋ ์์ ฏ๋ค์๋ BlocBuilder, BlocConsumer, BlocListener๊ฐ ์๋ค. ์ด๋ค์ ์ฐจ์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
BlocBuilder
BlocBuilder๋ UI๋ฅผ ํ๋ฉด์ ๊ทธ๋ฆด ๋ ์ฌ์ฉ๋๋ ์์ ฏ ์ค ํ๋๋ก, BlocProvider๋ก๋ถํฐ Bloc์ ๊ฐ์ ธ์์ ํ๋ฉด์ ๊ทธ๋ฆฌ๊ธฐ ์ํ Builder ํจ์๋ฅผ ํธ์ถํ๋ค. Builder ํจ์๋ ํ์ฌ ์ํ์ ๋ฐ๋ผ UI๋ฅผ ์์ฑํ๋๋ฐ, ์ด UI๋ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์๋ก ๊ทธ๋ ค์ง๋ค. ๋ฐ๋ผ์ BlocBuilder๋ Bloc์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค UI๋ฅผ ๊ฐฑ์ ํ๋๋ฐ ์ฌ์ฉ๋๋ค.
BlocConsumer
BlocConsumer๋ BlocBuilder์ ์ ์ฌํ์ง๋ง, UI๋ฅผ ๊ทธ๋ฆฌ๋ Builder ํจ์๋ฟ๋ง ์๋๋ผ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ํํ ์ด๋ฒคํธ๋ ๋ฑ๋กํ ์ ์๋ค. ์ฆ, BlocBuilder์ ๋ฌ๋ฆฌ ์ํ ๋ณ๊ฒฝ ์ด๋ฒคํธ์ ๋ฐ๋ฅธ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ค.
BlocListener
BlocListener๋ Bloc์ ์ํ ๋ณ๊ฒฝ ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ ์์ ฏ์ผ๋ก, BlocBuilder๋ BlocConsumer์ ๋ฌ๋ฆฌ UI๋ฅผ ๊ทธ๋ฆฌ์ง๋ ์๋๋ค. ๋์ , Bloc์์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ํํ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ ์ ์๋ค. BlocListener๋ Bloc์ด ๋ฐ์์ํค๋ ์ํ ๋ณ๊ฒฝ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์ ์ ํ ๋์์ ์ํํ๋๋ฐ ์ฌ์ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ํ๋ฉด์ Toast ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ๋ฑ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ค.
์ฆ, BlocBuilder๋ ์ํ๋ฅผ ๋ฐ๋ผ๋ณด๊ณ , BlocConsumer๋ ์ํ๋ฅผ ๋ฐ๋ผ๋ณด๋ฉด์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ณ , BlocListener๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ๋ผ๋ณธ๋ค๊ณ ํ ์ ์๋ค. ์ด๋ค์ ๊ฐ๊ฐ์ ์ํฉ์์ ํ์์ ๋ฐ๋ผ ์ ์ ํ ์์ ฏ์ ์ ํํ์ฌ ์ฌ์ฉํ๋ฉด ๋๋ค.































Bloc ์์ ์ธ์ state ๊ฐ ๋ฐ๋๋
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด emit ๊ณผ์ ์์ state ๋ฅผ ๊ฐ์์น์ด๋ค. (๊ธฐ์กด state์ ๋น๊ตํ์ฌ ๋ฌ๋ผ์ง state ๊ฐ ๋ค์ด์จ ๊ฒฝ์ฐ์๋ง) Bloc<Event, State>๊ฐ BlocBase<State>๋ฅผ ์์ํ๊ณ ์๊ณ BlocBase<State>๊ฐ state๋ฅผ ํ๋๋ก ๊ฐ๊ณ ์๋ ์ํ์ด๋ค.
์ฝ๋์์ ํ์ธํ ์ ์๋ฏ์ด Bloc<Event, State>์ emit ์ ๊ฒฐ๊ตญ super.emit(state)๋ก ๊ฒฐ๊ตญ BlocBase<State>์ emit ์ ํธ์ถํ๋ ๊ฒ์ด๋ฉฐ ์ฌ๊ธฐ์ ํ๋๋ก ๊ด๋ฆฌ์ค์ธ ๊ธฐ์กด state ์ ๋น๊ต ํ ๋ค๋ฅด๋ฉด ์๋ก์ด state ์ ํ ๋นํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
Bloc ์์ ์ธ์ ๊ตฌ๋
์์ ฏ์ด state ๋ณํ๋ฅผ ์๊ฒ ๋๋๊ฐ
state ๋ณํ์ ๋ํด์ ์ด๋ฅผ ๊ตฌ๋ ํ๊ณ ์๋ ์์ ฏ์ ๋ณํ๋ฅผ ์๋ฆฌ๋ ๊ฒ์ ํธ๋ค๋ฌ ๋ฑ๋ก ๋ถ๋ถ์์ ๋ฐ์ํ๋ค. ์๋ ์ฝ๋๋ฅผ ๋ณด์.
Last updated