Flutter๋ฅผ ํ๋ฉด ํญ์ ๋์ง๊ฒ ๋๋ ์ง๋ฌธ์ด ์์ต๋๋ค. ์ด๋ป๊ฒ ์ํ๊ด๋ฆฌ ํจํด์ ๊ตฌ์ถํ ์ง์ ๋ํ ๋ต์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋๊ฐ ๊ทธ์ ๋ํ ๋๋ต์ ๋๋ค.
๊ทธ๋๋ ๊ตฌ๊ธ์ ๋งค I/O ๋๋ง๋ค ์ํ๊ด๋ฆฌ ํจํด์ ๋ํด์ ์๊ฐํด์์ต๋๋ค.
๋ค์์ ๊ฐ ๋ ๋๋ณ ์๊ฐ๋ ํจํด์ ๋๋ค.
2018
2018 Google I/O (ScopedModel, BLoC)
2019
2019 Google I/O (Provider+ChangeNotifier)
2019 I/O. Provider+ChangeNotifier๊ฐ ์์๋ก ์๊ฐ๋์ต๋๋ค. ์ธ๋ป ๋ณด๋ฉด ์ด ์์ฒด๋ก Providerํจํด์ ์์ฑ์ผ๋ก ๋ณด์ ๋๋ค. ํ์ง๋ง ๊ฐ๊ณผํ๊ณ ์๋๊ฒ ์์ต๋๋ค. Provider๋ ํจํด์ด ์๋๋ผ ํจํค์ง์ ๋๋ค. Provider+ChangeNotifier๊ฐ ํจํด์ด์ง Provider๋ InheritedWidget์ Wrapํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ด ๋ป์. Provider+ '?'๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ ์ ๋๋ค. Provider+BLoC ํน์ Provider+Mobx ์ด์ธ์๋ ์ฌ๋ฌ๊ฐ์ง์ ํจํด๋ค์ด Provider์ ๊ฒฐํฉ๋ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ค ํจํด์ ์ฌ์ฉํด์ผํ ๊น์? ์ ๋ต. ์ํฉ๋ง๋ค ๋ค๋ฅด๊ฒ ์ ํํด์ผํฉ๋๋ค. ๋ค์์ 5๊ฐ์ง ์ ๋ ฅํ ์กฐํฉ๊ณผ ๊ฐ ์กฐํฉ์ด ํจ๊ณผ์ ์ธ ์ํฉ์ ๋ํด์ ์ ๋ฆฌํ ๊ฒ ์ ๋๋ค.
Provider + '?' : TOP 5
1. Provider+ChangeNotifier
์งง๊ณ . ์ฌ์ด. ChangeNotifier์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ด์ ๋จ์ ์ ๋๋ค. ์งง๊ณ ์ฌ์ด๋งํผ ๋น ์ง๊ฒ๋ ๋ง์ต๋๋ค. ๋ง์ฝ ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ํฌ๊ณ ๋ณต์กํ๋ค๋ฉด ์ถ๊ฐ์ ์ผ๋ก ๊ฐ๋ ์ ๋ถ์ฌ์ผ ํฉ๋๋ค. ์ ๊ฐ์ ๊ฒฝ์ฐ. BaseModel, ViewModelState ๋ฑ์ ์ถ๊ฐํ์ฌ Idle, Busy์ ๊ฐ์ State๋ฅผ ๊ด๋ฆฌํ์ต๋๋ค. ์ง๊ธ์์ ์๊ฐํด๋ณด๋ฉด ๊ทธ๋งํผ ๋ฉ๋ฆฌํธ๊ฐ ์์๋์ง,,, ๊ทธ๋ฅ BLoC ์ธ๊ฑธ ํํํ๊ณ ์์ต๋๋ค. ChangeNotifier๊ฐ ์์ข๋ค๋ ๊ฒ์ ์๋๋๋ค. ๊ฐ๋จํ ํ๋ก์ ํธ๋ UI๋ง ๊ฐ๋จํ ๊ตฌ์ฑํ๋ ๊ฑฐ๋ผ๋ฉด ์ ๋ ๊ทธ๋ฅ ChangeNotifier๋ฅผ ์ฌ์ฉํ ๊ฒ ์ ๋๋ค. ํ์ง๋ง ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ํฌ๊ณ ๋ณต์กํ๋ค๋ฉด ๊ฐ์ธ์ ์ผ๋ก ChangeNotifier๋ ์ ํฉํ์ง์๋ค๊ณ ์๊ฐํฉ๋๋ค.
2. Provider+BLoC
๋์ ์ ๋ขฐ์ฑ. BLoC์ 2018๋ ๋ถํฐ ๋์์ต๋๋ค. ๋ ํผ๋ฐ์ค, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ณต์ ๋ฌธ์์ ๊ฐ์ ๊ฒ๋ค์ด ๊ฐ์ฅ ์ ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ๊ตฌ์กฐ์ ์ผ๋ก๋ ๊ต์ฅํ ๊ฒฌ๊ณ ํจ์ ๋ณด์ฌ์ค๋๋ค. State์ Event๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํจ์ผ๋ก์จ ๋ค์ํ ์ํฉ์ ์ ์ฐํ๊ฒ ๋์ฒํ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ฒฌ๊ณ ํ๋งํผ ์ฝ๋๊ฐ ๊ธธ๊ณ ๋ณด์ผ๋ฌํ๋ ์ดํธ๊ฐ ๋ง์ต๋๋ค. ๋ฌ๋์ปค๋ธ๋ ๋ค๋ฅธ ํจํด์ ๋นํด ๊ฝค๋ ๋์ํธ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ณต์๋ฌธ์์ ๊ฐ๋ ๋ ์์ ๋ฆฌ๋์ด ์๊ณ ์์ ๋ ํ๋ถํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ฐ๊ณ ์ ํ๋ฉด ์ถฉ๋ถํ ์ตํ ์ ์์ต๋๋ค. Cubit์ด๋ผ๋ ๊ฐ๋ ์ ์ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ ์ด๋์ ๋๋ ๊ฐ์์ํฌ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ฐ๋จํ ํ๋ก์ ํธ์ BLoC์ ์ฌ์ฉํ ๊ฒ ์ด๋๊ณ ๋ฌผ์ด๋ณด๋ฉด ๊ตณ์ด? ๋ผ๋ ๋๋ต์ ํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ๋จํ๋ค๋ฉด ChangeNotifier๊ฐ ๋ ์ ํฉํฉ๋๋ค.
(TDD ํ๊ธฐ ํธํด์ ๊ทธ๋ฅ BLoC์ผ๋ก ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. BLoC์ ํ
์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ข์์,,,, ใ
ใ
)
3. Provider+StateNotifier
์ค๊ฐ. ChangeNotifier์ BLoC ์ฌ์ด์ ์ด๋์ฏค์ ๋๋ค. ChangeNotifier์ ๊ฒฌ๊ณ ํจ์ ๋ํ๊ณ BLoC์ ๊ฐ๊ฒฐํจ์ ๋ํ์ต๋๋ค. ์ธ๋ป๋ณด๋ฉด ๊ด์ฐฎ์๋ณด์ด์ง๋ง ์ ๊ฐ ์ฌ์ฉํด๋ณด์์๋๋ ์ด์ค๊ฐํ์ต๋๋ค. ์์ ํ๋ก์ ํธ์ ์ฐ๊ธฐ์๋ ๋ฌด๊ฒ๊ณ . ํฐ ํ๋ก์ ํธ์ ์ฌ์ฉํ์๋ ๋ถ์กฑํ๊ณ . ๋ํ 2020๋ ๋ค์ด์ ๋์จ ํจํค์ง๋ผ ์ฝ๊ฐ ์๊ฑฑ๊ฑฐ๋ฆฌ๋ ๋ถ๋ถ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น๊ฐ๋ ๊ณผ ๋น์ทํ๊ฒ ์ด๋ฏธ BLoC์ ์์ต๋๋ค. ๋ฐ๋ก Cubit ์ ๋๋ค. Cubit์ BLoC์ ๊ฐ๊ฒฐํจ์ ๋ํ ๋ฒ์ ผ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ StasteNotifier์ ๊ต์ฅํ ๋น์ทํ๊ฒ ๋์ํฉ๋๋ค. ์ ๋ผ๋ฉด StateNotifier ๋์ ์ Cubit์ ์ฌ์ฉํ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง. ์์ง ๋์จ์ง ์ผ๋ง์๋์๊ธฐ ๋๋ฌธ์. ๋ฏธ๋์ ์ข ๋ ์ข์ ํจํด์ผ๋ก ์ฑ์ฅํ๊ธธ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค.
4. Provider+Mobx
์ต์ํจ. Flutter๋ React์ ํฐ ์ํฅ์ ๋ฐ์์ต๋๋ค. ๋ฐ๋ผ์ React์์ ์ฌ์ฉ๋๋ Mobxํจํด์ Flutter์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. React๋ฅผ ๊ธฐ์กด์ ํ์๋ ๋ถ๋ค์. ์ต์ํ Mobx๋ฅผ Flutter์์ ๊ทธ๋๋ก ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค. ์ต์ํ์ ๋งํผ ๊ฒฌ๊ณ ํ๊ฒ ๋น ๋ฅด๊ฒ ์ฑ์ ๊ตฌ์ถํ ์ ์์ผ์ค ๊ฒ ์ ๋๋ค. ํ์ง๋ง. Flutter๋ฅผ ์๋ก์ด ์์ํ์๋ ๋ถ์ด๋ผ๋ฉด. ๊ตณ์ด Mobx๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋์ง์ ๋ํด์๋ ์๋ฌธ์ ์ด ์๊น๋๋ค. ์๋ก ์์ํ์ ๋ค๋ฉด. ์ ๋ BLoC์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
5. Provider+Redux
์์ Mobx๋ ๋๊ฐ์ต๋๋ค. React๋ฅผ ํ์๋ ๋ถ๋ค ์ค Redux๋ฅผ ์ฌ์ฉํ์๋ ๋ถ๋ค์. Redux๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ํ๋ฌํฐ ์ฑ์ ๊ตฌ์ถํ์๋ฉด ๋ฉ๋๋ค. ๊ทผ๋ฐ. Flutter๋ฅผ ๋ง ์์ํ์๊ณ . React์ ๊ฒฝํ์ด ์์ผ์๋ค๋ฉด. ๊ตณ์ด ํด๋น ํจํด์ ์ ํํ ์ด์ ๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ง์น๋ฉด์
์.. ๊ธ์ ์ฐ๋ค๋ณด๋. ์ค๋ฆฝ์ ์งํค์ง ๋ชปํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ธ์ด BLoC ์ชฝ์ผ๋ก ๋ง์ด ๊ธฐ์ธ์๋๋ฐ์ ใ ใ . ์ ์๊ฐ์๋ BLoC์ด ๊ทธ๋๋ง ๋ค๋ฅธ ํจํด์ ๋นํด ๊ฒฝ์๋ ฅ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌ๋์ปค๋ธ. ๋ณด์ผ๋ฌํ๋ ์ดํธ. BLoC์ด ๊ณ ์ง์ ์ผ๋ก ๊ฐ์ง๊ณ ์์๋ ๋ฌธ์ ๊ฐ Provider, Cubit์ผ๋ก ์ธํด ๋ง์ด ํด์๋์๊ธฐ ๋๋ฌธ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌผ๋ก ๊ทธ๋ ๋ค๊ณ ํด์ ๋ค๋ฅธ ํจํด์ด ์๋ฏธ๊ฐ ์๋ ๊ฒ์ด ์๋๋๋ค. ๊ฐ๋จํ ํ๋ก์ ํธ๋ผ๋ฉด Provider+ChangeNotifier ๊ฐ ํจ์ฌ ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค. React๋ฅผ ํ์๋ ๋ถ์ด๋ฉด Provider+Mobx or Redux ๊ฐ ๋ ๊ด์ฐฎ์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ง๋ง ์ ๋ง์์์ 1๋ฑ์ BLoC์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๋ฌ๋ถ๋ค๋ ์ฌ๋ฌ๋ถ๋ค ๋ง์ 1๋ฑ์ ์ฐพ์ผ์ จ์ผ๋ฉด ํฉ๋๋ค.
๊ธด ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค :)
'Flutter' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Flutter / multi_image_picker Asset์ Image๋ก ๋ณด์ด๊ฒ ํ๊ธฐ (0) | 2021.02.19 |
---|---|
Flutter/ popUntil ์ ํ ๋ ๊ฒ์ํ๋ฉด์ด ๋ฌ๋ค๋ฉด? (0) | 2021.02.19 |
Flutter / 4ํ : Flutter์ ์ํ๊ด๋ฆฌ (0) | 2020.08.01 |
Dart / 1ํ : Dart์ ์ค์ํ ๊ฐ๋ (0) | 2020.07.26 |
Flutter / 3ํ : Flutter์ UI์ ๊ดํ์ฌ (0) | 2020.07.24 |